【发布时间】:2019-09-15 04:55:22
【问题描述】:
当我尝试在我的 R DataFrame 上使用 shapiro.test 作为摘要函数时,我收到错误:
df %>% summarize_all(shapiro.test)
Error: Column `A` must be length 1 (a summary value), not 4
这是我的设置:
df = data.frame(A=sample(1:10,5), B=sample(1:10,5))
df
df %>% summarize_all(mean)
df %>% summarize_all(sd)
df %>% summarize_all(sum)
df %>% summarize_all(shapiro.test)
df$A %>% shapiro.test()
输出:
> df = data.frame(A=sample(1:10,5), B=sample(1:10,5))
> df
A B
1 1 8
2 8 4
3 5 5
4 10 6
5 7 1
> df %>% summarize_all(mean)
A B
1 6.2 4.8
> df %>% summarize_all(sd)
A B
1 3.420526 2.588436
> df %>% summarize_all(shapiro.test)
Error: Column `A` must be length 1 (a summary value), not 4
> df$A %>% shapiro.test()
Shapiro-Wilk normality test
data: .
W = 0.96086, p-value = 0.814
shapiro.test 有什么特别之处使其无法在列上进行矢量化处理?
【问题讨论】:
-
该函数返回一个长度为 4 的类
htest"的列表。尝试定义一个函数sh.test <- function(x) shapiro.test(x)$p.value并在管道中使用它。 -
查看错误消息,并查看您的夏皮罗测试的输出。摘要函数应该返回单个值,就像
mean和sd所做的那样。shapiro.test显然没有。您希望数据框中的测试输出有什么? W统计? p 值?
标签: r dataframe dplyr summarize