2017-10-06 97 views
0

如果你有一個數據幀,例如:達到一定的標準,如何提取值

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

您想提取p.value低於.05的列嗎?或者只是在.05以下的p.values的命名向量? – Tunn

回答

0

幫助頁面爲夏皮羅快速閱讀測試表明返回的對象是包含多個對象的列表項,包括p值。

str(shapiro.test(rnorm(100, mean = 5, sd = 3))) 

所以如果你要運行夏皮羅測試對多列數字數據如:

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] 

希望幫助!

+0

好的 - 太好了!這很有幫助 - 沒有這樣想過。 祝您有個愉快的一天! –