2016-01-05 25 views
7

Tôi vừa thấy câu hỏi hoàn toàn hay đã bị xóa và giống như người hỏi ban đầu tôi không thể tìm thấy bản sao, tôi đăng lại.Đặt NA trong ma trận sử dụng ma trận lôgic khác

Giả sử rằng tôi có một ma trận đơn giản ("m"), mà tôi muốn lập chỉ mục với một ma trận lôgic khác ("i"), giữ nguyên cấu trúc ma trận ban đầu. Một cái gì đó như thế này:

# original matrix 
m <- matrix(1:12, nrow = 3, ncol = 4) 

# logical matrix 
i <- matrix(c(rep(FALSE, 6), rep(TRUE, 6)), nrow = 3, ncol = 4) 

m 
i 

# Desired output: 
matrix(c(rep(NA,6), m[i]), nrow(m), ncol(m)) 
# however this seems bad programming... 

Sử dụng m[i] trả về véc tơ và không phải là ma trận. Cách chính xác để đạt được điều này là gì?

+1

Tôi đã định gán NA từ kết quả được chỉ định và từ thực tế là cả hai giải pháp của anh ấy và sự thay thế của tôi cũng cho kết quả tương tự. –

Trả lời

7

Những poster ban đầu thêm một nhận xét nói rằng ông đã tìm ra một giải pháp, sau đó gần như ngay lập tức xóa nó:

m[ !i ] <- NA 

tôi đã bắt đầu một câu trả lời mà cung cấp một giải pháp hơi khác nhau bằng cách sử dụng chức năng is.na<-:

is.na(m) <- !i 

Cả hai giải pháp dường như là mã R hợp lý dựa trên lập chỉ mục logic. (Cấu trúc ma trận i không thực sự dựa vào. Một vectơ có chiều dài và mục nhập thích hợp cũng sẽ bảo toàn cấu trúc ma trận m.)

Các vấn đề liên quan