将一个向量复制到另一个向量,省略 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"
如果向量的长度 兼容。
如何有选择地覆盖旧向量?我想添加替换值,但仅在它们不是 = 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"
如果向量的长度 兼容。