2010-08-16 34 views
23

Trong R, tôi có hai vectơ:Element-khôn ngoan có nghĩa là trong R

a <- c(1, 2, 3, 4) 
b <- c(NA, 6, 7, 8) 

Làm thế nào để tìm giá trị trung bình yếu tố khôn ngoan của hai vectơ, loại bỏ NA, mà không có một vòng lặp? ví dụ: tôi muốn nhận được vector của

(1, 4, 5, 6) 

Tôi biết các chức năng mean(), tôi biết lập luận na.rm = 1. Nhưng tôi không biết cách kết hợp mọi thứ lại với nhau. Để chắc chắn, trong thực tế, tôi có hàng ngàn vectơ với NA xuất hiện ở những nơi khác nhau, vì vậy mọi giải pháp phụ thuộc vào kích thước sẽ không hoạt động. Cảm ơn.

Trả lời

31

thế nào về:

rowMeans(cbind(a, b), na.rm=TRUE) 

hoặc

colMeans(rbind(a, b), na.rm=TRUE) 
+0

Ok, những thứ này thật tuyệt. Nhưng để có được những gì tôi muốn bạn vẫn cần phải thêm 'na.rm = 1', và điều đó giải quyết được vấn đề của tôi. Cám ơn. – Zhang18

+0

Tôi vừa thêm đối số na.rm. – Greg

+0

'colSums' và' rowSums' cũng tồn tại @ Zhang18, FYI. – Vince

3

Tôi không chắc chắn chính xác những gì bạn đang yêu cầu, nhưng không

apply(rbind(a,b),2,mean,na.rm = TRUE) 

làm những gì bạn muốn?

+0

Vâng, điều này cũng hoạt động. cám ơn. – Zhang18

+6

Phần chi tiết của colMeans và? RowMeans giải thích rằng các hàm này nhanh hơn nhiều so với áp dụng với fun = mean khi chúng được thực hiện cho tốc độ. – Greg

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