我有兩個18乘48的數據集。其中一人死亡,另一人死亡。兩者具有相同的列名稱(CNP1,CNP2,...,CNP48)。我想計算每個CNP的P值。 ,我使用的功能如下:如何計算48列的p值並保存結果
t.test(died_CNP $ CNP1,survived_CNP $ CNP1)[3] - 如何使用此功能的48列一氣呵成,並保存導致變量(p1,p2,...,p48)?
我有兩個18乘48的數據集。其中一人死亡,另一人死亡。兩者具有相同的列名稱(CNP1,CNP2,...,CNP48)。我想計算每個CNP的P值。 ,我使用的功能如下:如何計算48列的p值並保存結果
t.test(died_CNP $ CNP1,survived_CNP $ CNP1)[3] - 如何使用此功能的48列一氣呵成,並保存導致變量(p1,p2,...,p48)?
您可以遍歷列。
pVals <- numeric()
for(i in 1:ncol(died_CNP))
pVals[i] <- t.test(died_CNP[,i],survived_CNP[,i])$p.value
所得pVals
將長度48
的數值向量。建議在使用p.adjust
避免multiple comparisons problem
pValsAdjusted <- p.adjust(pVals)
這是太長了評論調整p值,而是延伸格里高爾的答案。關鍵的區別是它構造了for
循環而沒有增長對象。
pVals <- vector ("numeric", length = ncol (died_CNP))
for (i in seq_along (pVals)){
pVals[i] <- t.test(died_CNP[[i]], survived_CNP[[i]])$p.value
}
或者,你可以向量化它
pVals <- vapply (seq_along (died_CNP),
function (i){
t.test(died_CNP[,i],survived_CNP[,i])$p.value
},
numeric(1))
(類型手機上,測試的代碼)