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

时间:2015-01-10 17:29:42

标签: r

如何选择性地覆盖旧矢量?我想添加替换值,但仅限于它们不是= NA

首先从这些数据开始:

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

我想最终得到这个向量: new.vector:c('x', 'y', 3, 'z', 5)

编辑:感谢您的欢迎和帮助。很高兴看到一系列做同样事情的不同方式。

3 个答案:

答案 0 :(得分:3)

另一个类似于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]

答案 1 :(得分:2)

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

答案 2 :(得分:2)

你也可以使用这样的东西:

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

然后old.vector看起来像

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

如果矢量兼容长度。