私は241列と114行のdfを持っています。列60:241は数値であり、変数グループ(T1およびT2)に従ってペアt検定を実行したいと考えています。個々の変数については、reshape2パッケージのacastコマンドとt.testを使ってこれを行うことができましたが、私はこれを182個の変数すべてに対して自動的に実行するコマンドを見つけることができました。複数の自動生成されたデータフレームでt.testを実行しますか?
私はコードに何をしたいの簡単な例を作ってみました:
> df
PatientID Group Immvar1 Immvar2
1 1 T1 4 5
2 2 T1 7 8
3 2 T2 9 10
4 3 T1 2 3
5 3 T2 4 5
6 4 T1 1 2
7 4 T2 9 10
> df1 <- as.data.frame(acast(df$PatientID ~df$Group, data = df, fill=0, value.var=("Immvar1")))
> df1
T1 T2
1 4 0
2 7 9
3 2 4
4 1 9
> t.test(df1$T1,df1$T2, paired=TRUE)
私はすでに次のようにこの実行が自動的に見えるようにするために構成されたコード:
df2 <-df[,3:4]
modelList<-list()
for (i in 1:ncol(df2)) {
matrix <- formula(paste("as.data.frame(acast(PatientID ~ Group , data = df1, fill=0, value.var=(", names(df2[i]),")))"))
modelList[[i]] <-t.test(matrix$T1, matrix$T2, paired=TRUE)
}
をしかし、私は常に取得
一致するエラー(x、table、nomatch = 0L):オブジェクト 'Immvar1'が見つかりません
多分私はこれと全く違うアプローチにしなければならないかもしれませんし、このような操作には適していないモデリスト/式の組み合わせです。誰もがこの仕事をするアイディアを持っていますか?
非常にありがとうございます!いくつかの変更の後、それは私の元のデータセットにも作用しました!本当に素晴らしいと私は多くの仕事を節約!実際、あなたはもちろん、NA対0についてはまったく正しいです。私はあなたがそれを行う簡単な方法を知っているかどうかはわかりませんが、Rがt.testの結果をすごく優しい方法?私は線形回帰を実行するときにパッケージのほうきからきちんとした目を使っていますが、t.testの代替案はわかりません。 –
私はunlist(tmp [..]をunlist(x [...でコードに入れておいて、これはうまくいく!)を置き換えなければならないと思う!!これは私の他のスクリプトもたくさん適用できるコマンドです。もう一度! –
固定、ありがとう.. – Aaron