如何提取满足特定条件的值

How to extract values meeting a certain criterion

如果您有数据框,例如:

 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/list 包含数据..

提前致谢

快速阅读 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 值。

str

使用一些循环代码将它们提取出来,你就可以开始了

x <- unlist(lapply(list, `[`, 'p.value'))
x[x <= 0.5]

希望对您有所帮助!