R 错误:找不到函数";%>;%<-&引用;将NA指定给多列数据框中超出范围的值时

R 错误:找不到函数";%>;%<-&引用;将NA指定给多列数据框中超出范围的值时,r,dataframe,R,Dataframe,假设我想为不在[0.0,3.0]范围内的值指定NA。 为此,我应该1)选择值,2)为值指定NA 我从下面的链接中使用选择_if()阅读了一个解决方案 使用该解决方案,我成功地选择了所需的值 library(tidyverse) set.seed(100) df = as.data.frame(matrix(rnorm(100) + 1, ncol = 10)) df %>% select_if(~ all(.x > 0 & .x < 3)) 库(tidyverse)

假设我想为不在[0.0,3.0]范围内的值指定NA。 为此,我应该1)选择值,2)为值指定NA

我从下面的链接中使用
选择_if()
阅读了一个解决方案

使用该解决方案,我成功地选择了所需的值

library(tidyverse)
set.seed(100)
df = as.data.frame(matrix(rnorm(100) + 1, ncol = 10))
df %>% select_if(~ all(.x > 0 & .x < 3))
库(tidyverse)
种子集(100)
df=as.data.frame(矩阵(rnorm(100)+1,ncol=10))
df%>%选择_if(~all(.x>0和.x<3))
但当我分配NA时,如下所示:

df %>% select_if(~ all(.x > 0 & .x < 3)) <- NA

df%>%select_如果(~all(.x>0&.x<3))
select_如果这里的函数不正确,请阅读@r2evan的注释以了解它实际上不起作用的原因

尝试使用
mutate\u all
替换
replace

library(tidyverse)

df1 <- df %>%  mutate_all(funs(replace(., . > 0 & . < 3, NA)))
库(tidyverse)
df1%突变(funs(替换(.>0和<3,NA)))

与base R相同,您可以尝试

df[df > 0 & df < 3] <- NA

df[df>0&df<3]
如果这里的函数不正确,请选择_,此外,请阅读@r2evan's的评论,了解它实际上不起作用的原因

尝试使用
mutate\u all
替换
replace

library(tidyverse)

df1 <- df %>%  mutate_all(funs(replace(., . > 0 & . < 3, NA)))
库(tidyverse)
df1%突变(funs(替换(.>0和<3,NA)))

与base R相同,您可以尝试

df[df > 0 & df < 3] <- NA

df[df>0&df<3]通过类似于
names
的功能,您可以自己进行
names(mtcars)
,并提供列名列表。如果您使用
名称(mtcars),那么尝试实际赋值(使用LHS表示法)的一个问题是,包含函数(
%%>%%
)不能立即知道嵌套函数在做什么(在本例中,如果
选择_),因此替换某些列/值并不明显。(如Ronak的回答)最好是明确的。@r2evans我不知道真的有一个像“names”这样的函数。如果有一个像
names
这样的函数,你可以自己做
names(mtcars)
,它提供了列名列表。如果你做了
names(mtcars),那么实际分配它(使用LHS表示法)会有一个问题是因为包含函数(
%%>%%
)不能立即知道嵌套函数在做什么(在本例中,如果
选择_),所以替换某些列/值不是很明显。最好是显式的(如Ronak的回答)。@r2evans我不知道有这样的函数名称是的,基本R方法也可以工作。我使用select_if()来避免在[]中手动指定许多列。没错,base R方法也可以工作。我使用select_if()避免在[]中手动指定许多列。