假设我想将 NA 分配给不在 [0.0, 3.0] 范围内的值。为此,我应该 1) 选择值,2) 为值分配 NA。
我从下面的链接中使用select_if()
阅读了一个解决方案
在 R 中选择具有值范围的列
通过该解决方案,我成功地选择了所需的值。
library(tidyverse)
set.seed(100)
df = as.data.frame(matrix(rnorm(100) + 1, ncol = 10))
df %>% select_if(~ all(.x > 0 & .x < 3))
但是当我像下面这样分配 NA 时:
df %>% select_if(~ all(.x > 0 & .x < 3)) <- NA
发生错误:
找不到函数"%>%<-"
我错过了什么?
select_if
在这里不是正确的函数,此外,请阅读@r2evan的评论以了解为什么它实际上不起作用。
请尝试将mutate_all
与replace
一起使用。
library(tidyverse)
df1 <- df %>% mutate_all(funs(replace(., . > 0 & . < 3, NA)))
与基本 R 相同,您可以尝试
df[df > 0 & df < 3] <- NA