我有例如以下的矢量:
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)
有没有办法在没有大量循环的情况下这样做?非常感谢:))
答案 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)
考虑到您描述的条件,我会考虑pmin
或pmax
采取更直接的方法:
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