2015-10-17 50 views
0

我有一個空數據框的列表(xlistx0:x10。我也有填充數據幀y(約13,000行)。所有的數據框都有列數和列標題。將行添加到列表中的數據框

y Date Time Correct Incorrect Average Score EC E1? E2? E3? 
[1] 10/1 1:14  8   2   15  80 0 y n y 
[2] 10/2 8:45  5   5   12  50 1 n y y 

我想要的y每一行復制到dataframes之一xlist

for (i in 1:nrow(y)) { 
    xlist(paste0("x",y[i,3])) <- rbind(xlist(paste0("x",y[i,3])), y[i,])) 
} 

基本上,基於在「正確」列中的數字,我想該行復制到在xlist相應數據幀(因此第一行到x8,第二至x5)。

與dataframes名單的問題是,它不讀他們作爲dataframes這裏

> class(xlist[x1]) 
[1] "list" 

,但它是在環境面板

xlist list of 11 
x0: 'data.frame' 0 obs of 10 variables: 
..$ etc 
x1: 'data.frame' 0 obs of 10 variables: 
..$ etc 
etc 

使用上面的複製代碼拋出「數要替換的項目不是替換長度的倍數。「一些重寫已經得到「參數列數不匹配」(不知道如何)。所以,我想創造我自己的AddRow功能,看是否rbind是問題:

AddRow <- function(DF,NewRow) { 
    DF[nrow(DF) + 1] <- NewRow 
    DF 
} 

但它拋出一個「標不正確的#矩陣」的錯誤。

我怎樣才能將y的所有行復制到xlist的相應數據框中?

回答

0

我沒有弄清楚確切的答案,但我想出了一個更有效的解決方法,因爲迭代後我不再需要列表(而是實際的x數據框本身)。我發現了sqldf軟件包。

通過不使用框架列表,我得到了我需要的列表。

for (i in 0:10) { 
    assign(paste0("x",i), 
      sqldf(paste0("select * from y where Correct = ", i))) 
} 

這將創建11個dataframes,命名爲x0通過x10,每通過SQL查詢autopopulated。

+0

'split(y,y $ Correct)'將數據幀'y'分割成數據幀列表,每個數據幀都有一個單獨的值'Correct'。 –