如何使用管道?

Ale*_* SM 2 r pipe

我正在尝试使用管道,但我认为我的语法有问题。当我写的时候:

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,我不明白为什么它说我的参数不是数字。

akr*_*run 5

用于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)