说我有
a <- c(0:3, NA)
我希望将 0 替换为 1,并将 1 替换为 0。即,我想要 a <- c(1, 0, 2, 3, NA)
。以下代码不起作用,因为 NA
> a[a<2] <- 1- a[a<2]
Error in a[a < 2] <- 1 - a[a < 2] :
NAs are not allowed in subscripted assignments
我知道我们可以使用na.rm = T
如果我们使用一个函数。如何在我的案例中添加这样的参数?
最佳答案
只需使用 %in%
对值 0 和 1 进行子集化,然后从 1 中减去 - 对于 NA
值,%in%
返回 FALSE,并且仅对于与 rhs 匹配的值,则为 TRUE,然后我们减去 1,以便 1-1 = 0 且 1-0 = 1
a[a %in% 0:1] <- 1 - a[a %in% 0:1]
-输出
> a
[1] 1 0 2 3 NA
或者如果我们想使用OP的代码
a[a < 2 & !is.na(a)] <- 1 - a[a < 2 & !is.na(a)]
关于r - 从 R 中的向量中选择值时如何忽略 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75089365/