2016-08-25 88 views
-1

我試圖對time_of_day進行所有數據框列的方差分析,這是一個因素。我的其餘專欄都是雙打和同等長度的。如何在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的腦容量有影響。一天中的時間分爲早上,下午或晚上三類。

編輯:已解決 將字符串視爲公式將允許它運行,但我被建議不要有這麼多獨立的值,因爲它會誇大模型的統計結果。我不刪除此事,因爲有人與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

我想你的問題是你沒有一個ANOVA公式集成到你的aov()函數中。請參見下面的工作例如:

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

然而,似乎您試圖計算方差爲每列,而你至少需要兩個變量。也就是說,名義縮放條件變量和間隔縮放因變量(例如性別和體重)。所以我通常想知道方差分析是否是您的問題的正確方法。無論如何,爲了回答這個問題,需要樣本數據和你的研究問題的總結。

+0

我的條件變量是'time_of_day',其值爲1(上午),2(下午)或3(夜間)。因變量是大腦不同區域的體積。我想用'time_of_day'分析大腦中104個不同的區域。這就是爲什麼我循環遍歷數據框中的所有列。我需要改變以獲得此anova的工作? – Chriscross

+0

另外,你是什麼意思,我沒有一個ANOVA集成到我的aov()調用? – Chriscross

+0

好吧,我試過這個,它運行沒有錯誤,但我不知道爲什麼?如果(x> 9)測試<-aov(data_in [[i]),則可以使用(x = 0, pdf(「ROI vs一天中的時間(MF).pdf」) ]〜DATA_IN $ TIME_OF_DAY) 打印(概要(測試)) } X = X + 1 } dev.off()' – Chriscross

相關問題