2016-08-25 9 views
-1

私は因子であるtime_of_dayに対してすべてのデータフレーム列のANOVAを実行しようとしています。残りの列はすべて倍と同じ長さです。このコードを実行するrの式として文字列を使用する方法

x = 0 
pdf("Time_of_Day.pdf") 
for (i in names(data_in)){ 
    if(x > 9){ 
    test <- aov(paste(i, "~ time_of_day"), data = data_in) 
    } 
    x = x+1 
} 
dev.off() 

は私に、このエラーを与える:

私のコードは $を呼び出している
Error: $ operator is invalid for atomic vectors 

?これをどうすれば解決できますか?申し訳ありませんが、私はrに新しいですし、かなり失われています。

私の研究課題は、時刻が脳内の異なるROIで脳の容積に影響を与えるかどうかを調べることです。時刻は、朝、午後、または夜の3つのカテゴリに分けられます。

編集:SOLVED この文字列を数式として扱うと、これを実行できますが、モデルの統計結果を膨らませるので、この多くの独立した値を持たないようにアドバイスされています。私は誰かがaov()コールで同様の問題を抱えている場合、これを取り除こうとしていません。

x = 0 
pdf("Time_of_Day.pdf") 
for (i in names(data_in)){ 
    if(x > 9){ 
    test <- aov(as.formula(paste(i, "~ time_of_day")), data = data_in) 
    } 
    x = x+1 
} 
dev.off() 

答えて

1

あなたの問題は、aov()関数にANOVA式が組み込まれていないことです。次の作業の例を参照してください:

data_in <- data.frame(c(1,2,3),c(4,5,6),c(7,8,9)) 
names(data_in) <- c("first","second","third") 

for (i in seq_along(names(data_in))){ 
    test <- aov(data_in$first ~ data_in$second, data = data_in) 
    print(summary(test)) 
} 

しかし、あなたが、少なくとも2つの変数を必要とするのに対し、列ごとにANOVAを計算しようとしたようです。すなわち、公称スケーリングされた条件変数および間隔スケーリング依存変数(例えば、性別および体重)がある。だから私は一般的にANOVAがあなたの質問の正しい方法であるかどうか疑問に思っています。とにかく、この質問に答えるために、サンプルデータとあなたの研究質問の要約が必要になります。

+0

私の条件変数は、1(朝)、2(午後)、または3(夜)の値を与える 'time_of_day'です。従属変数は、脳の異なる領域の体積です。脳の104の異なる領域が「time_of_day」に対して分析したいと思っています。だから、私は自分のデータフレーム内のすべての列をループしています。このanovaを動作させるためには、何を変更する必要がありますか? – Chriscross

+0

また、私はaov()呼び出しにANOVAを統合していないということはどういう意味ですか? – Chriscross

+0

私はこれを試しましたが、エラーなしで実行されますが、理由はわかりません。 (x> 9){ test < - aov(data_in [[i])の場合は、pdf(「ROIs時刻(MF).pdf」) (名前(データ名)){ ]〜DATA_IN $ TIME_OF_DAY) プリント(サマリー(テスト)) } X = X + 1 } dev.off() '私はここに掲載何 – Chriscross

関連する問題