从R中的向量选择值时如何忽略NA

nhjlsmyf  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(137)

说我有

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。在我的例子中,如何添加这样的参数?

ubof19bj

ubof19bj1#

只需使用%in%将值0和1作为子集,并从1-%in%中减去,对于NA值返回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)]

相关问题