我有一个for loop在每次迭代后生成一个数据帧.我想将所有数据框附加在一起,但发现它很困难.以下是我正在尝试的,请建议如何解决它:
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)
Run Code Online (Sandbox Code Playgroud)
Gre*_*gor 104
不要在循环内部进行.制作一个列表,然后将它们组合在循环之外.
datalist = list()
for (i in 1:5) {
# ... 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)
Run Code Online (Sandbox Code Playgroud)
这是一种更像R的做事方式.它也可以大大加快,特别是如果您使用dplyr::bind_rows或data.table::rbindlist最终组合数据帧.
您应该尝试这样:
df_total = data.frame()
for (i in 1:7){
# vector output
model <- #some processing
# add vector to a dataframe
df <- data.frame(model)
df_total <- rbind(df_total,df)
}
Run Code Online (Sandbox Code Playgroud)