我有一个空数据框xlist
的列表(x0: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
的每一行复制到xlist
中的一个数据框中。
for (i in 1:nrow(y)) {
xlist(paste0("x",y[i,3])) <- rbind(xlist(paste0("x",y[i,3])), y[i,]))
}
基本上,根据&#34;正确的数字&#34;我希望将该行复制到xlist
中的相应数据框中(因此第一行为x8
,第二行为x5
)。
数据框列表的问题在于它没有将它们作为数据框读取
> 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
使用上面的复制代码抛出&#34;要替换的项目数不是替换长度的倍数。&#34;一些重写已经得到了#34;参数列数不匹配&#34; (不知道如何)。所以我尝试创建自己的AddRow函数来查看rbind
是否是问题:
AddRow <- function(DF,NewRow) {
DF[nrow(DF) + 1] <- NewRow
DF
}
但它会在矩阵&#34;中抛出一个&#34;不正确的下标#错误。
如何将y
的所有行复制到xlist
中的相应数据框?
答案 0 :(得分:0)
我没有弄清楚确切的答案,但我想出了一个更有效的解决方法,因为在迭代之后我不再需要该列表(而是实际的x
数据帧他们自己)。我发现了sqldf包。
根本没有使用帧列表,我得到了我需要的列表。
for (i in 0:10) {
assign(paste0("x",i),
sqldf(paste0("select * from y where Correct = ", i)))
}
这会创建11个数据框,名为x0
到x10
,每个数据框都通过SQL查询自动填充。