我正在尝试使用dplyr
执行以下操作:
tapply(iris$Petal.Length, iris$Species, shapiro.test)
我想按 Speicies 拆分 Petal.Lengths,并应用一个函数,在这种情况下,shapiro.test.
我阅读了这个SO question和许多其他页面。我有点能够将变量分成组,使用do
:
iris %>%
group_by(Species) %>%
select(Petal.Length) %>%
do(print(.$Petal.Length))
[1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2
[16] 1.5 1.3 1.4 1.7 1.5 1.7 1.5 1.0 1.7 1.9 1.6 1.6 1.5 1.4 1.6
[31] 1.6 1.5 1.5 1.4 1.5 1.2 1.3 1.4 1.3 1.5 1.3 1.3 1.3 1.6 1.9
[46] 1.4 1.6 1.4 1.5 1.4
[1] 4.7 4.5 4.9 4.0 4.6 4.5 4.7 3.3 4.6 3.9 3.5 4.2 4.0 4.7 3.6
[16] 4.4 4.5 4.1 4.5 3.9 4.8 4.0 4.9 4.7 4.3 4.4 4.8 5.0 4.5 3.5
[31] 3.8 3.7 3.9 5.1 4.5 4.5 4.7 4.4 4.1 4.0 4.4 4.6 4.0 3.3 4.2
[46] 4.2 4.2 4.3 3.0 4.1
将列“拆分”为组似乎正在起作用。但是将碎片传递给 shapiro.test 的方法仍然让我望而却步。我看到这group_by
与拆分为.
我尝试了很多变化,包括:
iris %>%
group_by(Species) %>%
select(Petal.Length) %>%
summarise(shapiro.test)
并且
iris %>%
group_by(Species) %>%
select(Petal.Length) %>%
summarise_each(funs(shapiro.test))
# Error: expecting a single value
我怎样才能dplyr
运行shapiro.test()
三次,每个物种的 Petal.Lengths 一次?