使用 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'相同length
的NA
向量,然后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
假设我有两个向量,一个包含 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'相同length
的NA
向量,然后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