我对R有点新鲜,这个网站在回答很多问题时给了我很大的帮助。但是,我遇到了最近的一个问题,并且已经用尽所有选项来自行寻找解决方案,并且需要一些帮助。
我正在尝试编写一个代码,我创建多个数据框(或矩阵) INSIDE 循环并循环5000次。在每个循环中,我希望变量更改,以便我可以在以后检索每个循环的数据。
此外,我希望能够为其他数据帧重复此方法,并在创建这些新数据帧时,它会根据其所在的迭代利用其他数据帧。
我试图找到一个解决方案,它似乎可能是for loop
或apply
函数,但我不知道如何执行它。作为我希望看到的一个例子:
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.a 和 df.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)
...
}
但这通常会导致以下错误:“要替换的项目数不是替换长度的倍数”。
所以我不确定我还能做些什么,并且真的希望有人能够提供帮助。
答案 0 :(得分:3)
将对象df.x
创建为空列表:
df.a <- list()
df.b <- list()
df.c <- list()
然后使用双方块支持访问(并写入)各个数据帧:
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)
}