如果您有数据框,例如:
D1 <-(DW$Ag, DW$Al, DW$As, DW$Ba)
*元素浓度
你运行shapiro.test
结果是,例如:
DW.Ag DW.Al DW.As DW.Ba
statistic 0.9030996 0.5204454 0.9761229 0.9286749
p.value 0.01000898 8.873327e-09 0.7157865 0.04528581
你需要提取所有等于或低于0.5的p值,你是怎么做到的? 我试过了:
stat[stat$p.value <= 0.5, ]
stat[which(lres1$p.value <= 0.5), ]
(注意:让我们说结果的名称是包含数据的STAT /列表..
提前致谢
答案 0 :(得分:0)
快速阅读shapiro测试的帮助页面表明返回的对象是一个包含多个对象的列表项,包括p值。
str(shapiro.test(rnorm(100, mean = 5, sd = 3)))
因此,如果您要对多列数字数据运行shapiro测试,例如:
df <- data.frame(x1 = rnorm(100, mean = 5, sd = 3), x2 = rnorm(100, mean = 5, sd = 3), x3 = rnorm(100, mean = 5, sd = 3), x4 = rnorm(100, mean = 5, sd = 3))
list <- lapply(df, shapiro.test)
使用str()
检查结果。您可以在此样本数据上找到4次测试运行的p值。
使用一些循环代码将它们解压缩出来,你很高兴
x <- unlist(lapply(list, `[`, 'p.value'))
x[x <= 0.5]
希望有所帮助!