2013-08-29 30 views
1

我對R有點新,並且這個站點對於我在回答很多問題方面有着驚人的幫助。但是,我遇到了一個最近的問題,並且已經用盡了所有選項來自行找到解決方案,並且需要一些幫助。創建數據框並更改每個迭代中的for循環或應用

我想寫一個代碼,我創建多個數據幀(或矩陣)INSIDE循環並循環它5000次。在每個循環中,我希望變量能夠更改,以便稍後可以檢索每個循環的數據。 此外,我希望能夠爲其他數據幀重複此方法,並創建這些新的數據幀,它基於它所處的迭代吸取其他數據幀。 我試圖找到這個解決方案,它似乎可以是for loopapply函數,但我不知道如何執行它。由於我想什麼個例子看看:

for (i in 1:10) { 
df.a[i] <- data.frame (…information...) 
df.b[i] <- data.frame (...information...) 
df.c[i] <- data.frame (new.col.A=df.a[i]$column1, new.col.B=df.b[i]$column2) 
} 

然後,將具有運行循環之後,如果我寫df.c3我會發現在環產生的第三次迭代的數據幀其具有來自第3次迭代的數據,其中df.adf.b

的「最近」我來得到什麼,我想我需要的是這樣做的:

df.a = seq (1, 10, by=1) 
df.b = seq (1,10, by=1) 
df.c = seq (1,10, by=1) 
for (i in 1:10) { 
df.a[[i]] <- data.frame (...information) 
... 
} 

但是,這通常導致一個錯誤:「的項目,以取代數量並不多的替換長度「

所以我不知道我還能做什麼,真的希望有人能夠幫助。採用雙方backets

df.a <- list() 
df.b <- list() 
df.c <- list() 

然後訪問(和寫入)個人dataframes:

+2

'df.a'是一個載體,你索引它作爲一個列表。目前還不清楚你想要的結果是什麼。一個'data.frames'列表? – John

回答

3

創建對象df.x爲空列表

for (i in 1:10) { 
    df.a[[i]] <- data.frame(...) 
    df.b[[i]] <- data.frame(...) 
    df.c[[i]] <- data.frame(new.col.A=df.a[[i]]$column1, new.col.B=df.b[[i]]$column2) 
} 
+0

非常感謝,這正是我所需要的。然而,一個意外的問題發生,我沒有想到在我原來的帖子中提問。 雖然'for循環'成功地處理了數據幀的迭代(例如'df.a [[i]]'),我還需要遍歷一個特定數據幀的列(例如'df.rng') 。 如果df.rng的列是X1:X10,例如在**迭代4 **(即df.a [[4]])上,我需要它也遍歷'df.rng $ X [ [4]]'(df.rng $ X [[i]])等等。 你知道如何做到這一點嗎?如果這不夠,我會寫一個更詳細的問題。謝謝。 –

+0

@AndrewJ使用'df.rng [,i]',如果你只有*這個列(X1,...,X10),或者'df.rng [,paste0(「X」,i) ]'按名稱引用列。請不要*使用'df.rng $ X [[i]]',因爲這意味着在第i行的值和'df.rng'的列「X」。 –