我有两个向量:vector1和vector2,长度相同。我想只得到vector1的值,其中vector1不是na,而vector2不是na。我尝试使用该代码,但它不起作用:
vector1step1<-ifelse(((is.na(vector1)==F)&(is.na(vector2)==F)), vector1, NA)
vector1step2<-vector1step1[!is.na(vector1step1)]
一个想法? 提前谢谢你:)
答案 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
的情况。