为什么意思是忽略修剪参数,除非我使用奇怪的语法?

Mic*_*war 2 r dplyr

我试图在降低高值和低值后计算平均值。但以下忽略了修剪参数:

library(tidyverse)
mtcars %>% 
  summarize(mpg = mean(mpg),
            mpg_trimmed = mean(mpg, trim = 0.05))
#>        mpg mpg_trimmed
#> 1 20.09062    20.09062
Run Code Online (Sandbox Code Playgroud)

但以下工作:

library(tidyverse)
mtcars %>% 
  summarize(mpg = mean(.$mpg),
            mpg_trimmed = mean(.$mpg, trim = 0.05))
#>        mpg mpg_trimmed
#> 1 20.09062    19.95333
Run Code Online (Sandbox Code Playgroud)

为什么我需要使用.$

Edw*_*ard 5

因为您正在屏蔽原始mpg变量(在函数范围内创建另一个变量)。给一个不同的名字,比如mpg_mean。请记住, dplyr 使新创建的变量可以立即访问。

library(dplyr)

mtcars %>% 
  summarize(mpg_mean = mean(mpg),
            mpg_trimmed = mean(mpg, trim = 0.05))
#>   mpg_mean mpg_trimmed
#> 1 20.09062    19.95333
Run Code Online (Sandbox Code Playgroud)