使用 dplyr 对组或因子使用函数

Use function over groups or factors with dplyr

我想使用一个功能,例如shapiro.test() 数据集中的几个组。

第一次尝试

library(tidyverse)
library(magrittr)

mtcars %>% group_by(cyl) %$% shapiro.test(wt)$p.value
#> [1] 0.09265499

但这并没有像我预期的那样遍历这些组。 然后我尝试了一个将结果输出为数据框的函数,因为这是针对 Stack Overflow 上的另一个问题所采用的方法。

checkNorm <- function(x) {
  return(data.frame(P = shapiro.test(x)$p.value))
}

mtcars %>% group_by(cyl) %$% checkNorm(wt)
#>            P
#> 1 0.09265499

使函数遍历 group_by() 传递的组的适当方法是什么?

创建一个新列来存储每个组的 p-value :

library(dplyr)

mtcars %>% 
  group_by(cyl) %>%
  summarise(p_val = shapiro.test(wt)$p.value)

#   cyl   p_val
#  <dbl>   <dbl>
#1     4 0.570  
#2     6 0.131  
#3     8 0.00275