如何用 r 中的 NA 替换我的数据框某些列的非正值

How to replace non-positive values of some columns of my dataframe with NA in r

我有一个数据框,我想将 NA 分配给特定列的非正值。

我将尝试使用 mtcars 数据框实现一个最小的可重现示例,我将尝试使用 NA 更改两列 cyldisp <= 5.

library(dplyr)

view(mtcars)


Nomi <- c("cyl", "disp")

for(i in Nomi) {
  mtcars$i[mtcars$i <= 5] <- NA
} 

Nomi 是具有 mtcars 列名称的向量,我想用 NA.

更改值

我不完全理解收到的错误消息,我想找到一个可以在 NA 中进行更改的解决方案。

如果您对 dplyr 感到满意,可以在 mutate(across()) 中使用 ifelse 语句。表示acrosscyldisp列,如果这两列的值为<= 5,则将其替换为NA。否则,保持原始值 (.x).

请注意,这只会将结果输出到控制台 ,而不会 实际替换 mtcars 数据集。

library(dplyr)

mtcars %>% mutate(across(c(cyl, disp), ~ ifelse(.x <= 5, NA, .x)))

在base R中,你可以直接在dataframe上进行替换。

Nomi <- c("cyl", "disp")
df <- mtcars
df[Nomi][df[Nomi] <= 5] <- NA
df