R:对NA和矢量建筑

时间:2015-04-30 10:49:08

标签: r vector na

我有两个向量:vector1和vector2,长度相同。我想只得到vector1的值,其中vector1不是na,而vector2不是na。我尝试使用该代码,但它不起作用:

vector1step1<-ifelse(((is.na(vector1)==F)&(is.na(vector2)==F)), vector1, NA)
vector1step2<-vector1step1[!is.na(vector1step1)]

一个想法? 提前谢谢你:)

1 个答案:

答案 0 :(得分:-2)

考虑这一点的最佳方式可能是作为data.frame或matrix,并创建第三个向量,该向量是对每行的apply调用产生的。像

这样的东西
dta <- data.frame(v1 = vector_step1, v2=vector_step2)
dta$v3 <- apply(dta, 1, function(x) ifelse(!is.na(x[1]), x[1], x[2]))

apply中的1表示逐行,一次切出一行。每个切片中的第一个元素,临时重命名为x [1],将来自v1,第二个,临时重命名的x [2]将来自同一行,但是v2。

您还可以通过嵌套在另一个NA语句中来扩展apply中的代码以处理v1和v2都为ifelse的情况。