我有一个for循环
,它在每次迭代后生成一个数据帧。我想将所有数据框附加在一起,但发现很困难。以下是我的
我正在尝试,请建议如何修复它:
d = NULL
for (i in 1:7) {
# vector output
model <- #some processing
# add vector to a dataframe
df <- data.frame(model)
}
df_total <- rbind(d,df)
最佳答案
不要在循环内执行此操作。制作一个列表,然后在循环外将它们组合起来。
n = 5
datalist = list()
# or pre-allocate for slightly more efficiency
datalist = vector("list", length = n)
for (i in 1:n) {
# ... make some data
dat <- data.frame(x = rnorm(10), y = runif(10))
dat$i <- i # maybe you want to keep track of which iteration produced it?
datalist[[i]] <- dat # add it to your list
}
big_data = do.call(rbind, datalist)
# or big_data <- dplyr::bind_rows(datalist)
# or big_data <- data.table::rbindlist(datalist)
这是一种更像 R 的做事方式。它也可以更快,特别是如果您使用 dplyr::bind_rows 或 data.table::rbindlist 来最终组合数据帧。
关于r - 在 for 循环中将数据帧附加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402528/