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

标签 r

说我有

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/

相关文章:

r - 如何通过传递字符向量重命名 tibble 中的所有列名?

r - 将字符串变量分组为 R 中的因子

r - 仅在包的描述中导入 foreach 时如何使用 %dopar%

r - 更改现有几何图形的颜色,没有分组

r - 更改格子图中标题面板的大小

r - 如何对数据进行分类并绘制图表

r - 在具有不同 nrows 的组内随机抽取 n 个样本

r - 对 R 中的大量变量子集应用均值插补

r - 根据条件将命名数值向量(按升序)转换为命名逻辑向量

r - Microsoft R Server 中的 Shiny 应用程序