如何选择性地覆盖旧矢量?我想添加替换值,但仅限于它们不是= NA
。
首先从这些数据开始:
old.vector <- 1:5
replacement.values <- c('x', 'y', NA, 'z', NA)
我想最终得到这个向量:
new.vector:c('x', 'y', 3, 'z', 5)
编辑:感谢您的欢迎和帮助。很高兴看到一系列做同样事情的不同方式。
答案 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"
如果矢量兼容长度。