我試圖通過資料框架的每一列進行TukeyHSD回圈測驗,并比較處理水平。這里有一些模擬資料,是我所擁有的資料的簡化版本(我的資料有大約350列):
df1 <- data. frame(cmpd1 = c(500。 436。 1,1。 1,1),
cmpd2 = c(1。 1, 1。 1,1。 253),
cmpd3 = c(1, 1, 300, 57, 150, 260),
治療=c("W"。 "W","A"。 "A", "D"。 "D"))
我按照這個帖子中的建議,成功地創建了一個回圈,為每一列運行方差分析,只輸出處理比較的p值<0.07的列:
# specific compound differences。
for (i in 1: 3){
列 < - names(df1[i])
anova <-掃帚:: tidy(aov(df1[, i] ~ treatment。 資料 = df1))
# only want aov with P < 0.07 printed
if(anova$p. value[1] < 0. 07) { >。
print(column)
print(ANOVA)
}
}
然而,我想以類似的方式在所有列上運行TukeyHSD測驗,只輸出任何給定處理比較的p值<0.07的tukey結果。我嘗試了類似的方法,但沒有成功,出現了錯誤 "Error in if (tukey[["p adj"]] < 0.07) { : argument is of length zero":
for (i in 1: 3){
列 < - names(df1[i])
anova < - aov(df1[。 i] ~ treatment, data= df1)
tukey <- TukeyHSD(ANOVA)
#只希望列印出P < 0.07的tukey。
if(tukey["p adj"]] < 0. 07) { >。
print(column)
print(tukey)
}
}
我無法找出正確的方法讓它只輸出包含p值<0.07的tukey測驗,所以我理想的輸出應該是這樣的(這包含捏造的值):
$cmpd1
diff lwr upr p adj
D-A 2.728484e-12 -29169。 59 29169.59 1.0000000
W-A 3.637979e-12 -32278。 10 32278.10 0.0001
W-D 1.484573e 04 -13620。 88 43312.34 0.056
uj5u.com熱心網友回復:
TukeyHSD的輸出是一個串列,從str結構可以看出
str(TukeyHSD(aov(df1[, 1] ~ treatment。 資料 = df1)))
1的清單
$治療: num [1。 3, 1。 4] -2。 84e-14 4.67e 02 4.67e 02 -1.09e 02 3.58e 02 ...
.. - attr(*。 "dimnames")=List of 2
.. .. $ : chr [1。 3] "D-A"/span> "W-A"/span> "W-D"/span>
.. .. $ : chr [1。 4]/span> "diff" "lwr" "upr" "p adj"
- attr(*。 "class")= chr [/span>1: 2] "TukeyHSD"/span> "multicomp"/span>
- attr(*, " orig. call")=語言aov(公式= df1[。 1] ~ treatment。 資料= df1)
- attr(*, "conf. level")= num 0.95。
- attr(*。 "ordered")= logi FALSE
我們可以提取串列元素'treatment',它是一個matrix,因此[[]或$將不起作用。 我們可以使用帶有列名的[以及,來分隔行/列索引或名稱,并用any來包裝,因為'p adj'有3個值(if期望一個單一的TRUE/FALSE邏輯輸入)
for (i in 1: 3){
列 < - names(df1[i])
anova < - aov(df1[。 i] ~ treatment, data= df1)
tukey <- TukeyHSD(ANOVA)
#只希望列印出P < 0.07的tukey。
if(any(tukey$treatment[。 "p adj"]/span> < 0. 07)) {
print(column)
print(setNames(tukey, column))
}
}
輸出
[1] "cmpd1"
平均值的Tukey多重比較
95% family-wise confidence level
適合。 aov(formula = df1[, i] ~ treatment, data = df1)
$cmpd1
diff lwr upr p adj
D-A -2. 842171e-14 -109.1823 109.1823 1.000000
W-A 4.670000e 02 357.8177 576.1823 0.000839
W-D 4.670000e 02 357.8177 576.1823 0.000839
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/309979.html
標籤:
上一篇:在陣列中的前4個物件上設定屬性,然后在第5個物件、第9個物件等上重新啟動序列。
下一篇:<p>我是Kotlin的新手,我試圖寫一個函式,將一個數字轉換為羅馬數字;但是,我無法從回圈內部設定"numberBeingChecked"和"romanNu
