2017-07-07 18 views
1

18 x 48のデータセットが2つあります。 1つは死んだ人のためのもので、もう1つは生き残るためのものです。どちらも同じ列名(CNP1、CNP2、...、CNP48)を持ちます。私は各CNPのP値を計算したいと思います。私が使用しています 機能は以下の通りです:48列のp値を計算して結果を保存する方法

t.test(died_CNP $ CNP1、survived_CNP $ CNP1)[3] - どのように私は一度に48列に対して、この機能を使用することができますし、保存します変数(p1、p2、...、p48)になりますか?

答えて

1

列をループするだけです。

pVals <- numeric() 
for(i in 1:ncol(died_CNP)) 
    pVals[i] <- t.test(died_CNP[,i],survived_CNP[,i])$p.value 

pVals48の数値ベクトルであろう。コメントのためにあまりにも長いですが、グレゴールの答えを拡張multiple comparisons problem

pValsAdjusted <- p.adjust(pVals) 
1

を避けるためにp.adjustを使用して、p値を調整することをお勧めします。主な違いは、オブジェクトを拡張せずにループを構築することです。

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)) 

(電話で型付き未テスト、コード)

をベクトル化することができます
関連する問題