2017-09-26 31 views
0

遍歷數據幀變量我有彼此不同的只有少數變量幾dataframes。他們大多是一樣的。 我想在循環中準備變量,因此我不必爲所有數據框單獨指定每個變量。然而,我遇到了一些問題。中的R

clist <- c("data", "data_error", "data_RT") 

我第一次把我dataframes的

for (i in clist) { 
i$ID <- as.factor(i$ID) 
i$TMS <- as.factor(i$TMS) 
i$bias<- as.numeric(i$bias) 
... } 

的我嘗試遍歷所有我要準備的變量名的列表。但是,這是不可能的,我得到一個錯誤信息說:

Error in i$ID : $ operator is invalid for atomic vectors 

我想谷歌的幫助,但它:(你能幫助我理解我在做什麼,我不明白的解釋錯誤以及如何我可以解決這個問題

+1

的$ - 運算符不工作動態。用I [ 「ID」] < - as.factor(I [ 「ID」]).... –

+1

還需要在CLIST的dataframes爲object_names而不是字符串。 –

+0

嗨安德烈!感謝提示!但是它仍然會產生一個錯誤。我現在將其改爲:'CLIST < - C(數據,data_error,data_RT) 爲(i的CLIST){ I [ 「ID」] < - as.factor(I [, 「ID」]) } '但它告訴我''[.default'(i,,「ID」)中的錯誤:維數不正確。這混淆我,因爲如果我剛更換第 「i」 與 「數據」(如我打算在循環做)'數據[, 「ID」] < - as.factor(數據[, 「ID」])',它確實有效......有關尺寸不匹配可能源於何處的任何想法? – Inkling

回答

2

你可以使用dataframes的列表,而不是名稱的載體:

clist <- list(data, data_error, data_RT) 

然後通過列表循環:

for (i in 1:length(clist)) { 
clist[[i]]$ID <- as.factor(clist[[i]]$ID) 
clist[[i]]$TMS <- as.factor(clist[[i]]$TMS) 
clist[[i]]$bias<- as.numeric(clist[[i]]$bias) 
... } 

之後,您可以使用

list2env(clist,globalenv()) 

把dataframes回你的地球環境。不過,我建議你將它們放在列表中。