将一个向量复制到另一个向量,省略 NA 值

copy one vector to another, omitting NA values

如何有选择地覆盖旧向量?我想添加替换值,但仅在它们不是 = NA.

的地方添加

所以从这个数据开始:

old.vector <- 1:5
replacement.values <- c('x', 'y', NA, 'z', NA)

我想以这个向量结束: new.vector: c('x', 'y', 3, 'z', 5)

编辑:感谢您的欢迎和帮助。很高兴看到很多不同的方法来做同样的事情。

idx <- is.na(replacement.values)
replace(replacement.values, idx, old.vector[idx])
# [1] "x" "y" "3" "z" "5"

另一种类似于 Lukes 的方法就是简单地用 indx 替换

indx <- is.na(replacement.values)
replacement.values[indx] <- old.vector[indx]
## [1] "x" "y" "3" "z" "5"

或者你可以反过来做(如@RusanKax 所建议)

indx <- !is.na(replacement.values)
old.vector[indx] <- replacement.values[indx]

您也可以使用类似这样的东西:

old.vector<-ifelse(is.na(replacement.values),old.vector,replacement.values)

然后old.vector看起来像

old.vector
[1] "x" "y" "3" "z" "5"

如果向量的长度 兼容