我正在尝试使用管道,但我认为我的语法有问题。当我写的时候:
mean(b_2021_01$Day.of.week, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是当我写...
b_2021_01 %>% mean(Day.of.week, na.rm=T)
Run Code Online (Sandbox Code Playgroud)
出现错误消息“警告消息:在mean.default(., Day.of.week, na.rm = T)中:参数不是数字或逻辑:返回NA”
“Day.of.week”变量是一个 int,我不明白为什么它说我的参数不是数字。
用于pull提取列,然后使用mean
library(magrittr)
b_2021_01 %>%
pull(Day.of.week) %>%
mean(na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)
或者用{}
b_2021_01 %>%
{mean(.$Day.of.week, na.rm=TRUE)}
Run Code Online (Sandbox Code Playgroud)
或者使用说明运算符 ( %$%)
b_2021_01 %$%
mean(Day.of.week, na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)
-测试
> mtcars %$%
mean(mpg, na.rm = TRUE)
[1] 20.09062
Run Code Online (Sandbox Code Playgroud)
错误的原因是第一个参数x应该是一个向量,但在 的 rhs 上%>%,它被视为整个 data.frame 作为输入
> mtcars %>% mean(.$mpg, na.rm = TRUE)
[1] NA
Warning message:
In mean.default(., .$mpg, na.rm = TRUE) :
argument is not numeric or logical: returning NA
> mean(mtcars, mtcars$mpg )
[1] NA
Warning message:
In mean.default(mtcars, mtcars$mpg) :
argument is not numeric or logical: returning NA
Run Code Online (Sandbox Code Playgroud)