使用 R 将特定元素插入向量

inserting specific elements into vector using R

假设我有两个向量,一个包含 NA 值,另一个是删除 NA 值后第一个向量的长度。我希望将第一个向量的 NA 值插入第二个向量,同时保持 NA 值的位置相同。

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

这可以通过连接每个组件来完成,但这看起来非常乏味,尤其是因为我的数据比上面的例子复杂得多。像

b[which(is.na(a))]<-NA

是我要找的,但这当然是替换元素,而不是像我想要的那样插入元素。虽然看起来比较简单,但我对此一头雾水。

根据'a'[=17=中的非NA元素,创建与'a'相同lengthNA向量,然后replace ]

b <- replace(rep(NA, length(a)), !is.na(a), b)

-输出

b
#[1]  1  2  4  3  6 NA  5  7 NA  8 40 NA

或更简洁,在 'a'

上执行 replace
replace(a, !is.na(a), b)
[1]  1  2  4  3  6 NA  5  7 NA  8 40 NA