合并R中的多个向量以去除NA

时间:2015-03-31 16:07:14

标签: r

我有例如以下的矢量:

 a= c(1, NA, NA, 2, 3)
 b=c(NA, 1, NA, NA, NA)
 c=c(NA, NA, 5, NA, NA)

我希望合并三个向量来获取

  d=c(1,1,5,2,3)

有没有办法在没有大量循环的情况下这样做?非常感谢:))

2 个答案:

答案 0 :(得分:2)

你可以尝试

 rowSums(cbind(a,b,c), na.rm=TRUE)
 #[1] 1 1 5 2 3

mat <- cbind(a,b,c)
mat[cbind(1:nrow(mat),max.col(!is.na(mat)))]
#[1] 1 1 5 2 3

或者

ind <- which(!is.na(mat), arr.ind=TRUE)
mat[ind[order(ind[,1]),]]
#[1] 1 1 5 2 3

答案 1 :(得分:2)

考虑到您描述的条件,我会考虑pminpmax采取更直接的方法:

pmin(a, b, c, na.rm = TRUE)
# [1] 1 1 5 2 3
pmax(a, b, c, na.rm = TRUE)
# [1] 1 1 5 2 3