Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-循环后组合不同长度的数据帧_R_Loops_Merge_Dataframe - Fatal编程技术网

R-循环后组合不同长度的数据帧

R-循环后组合不同长度的数据帧,r,loops,merge,dataframe,R,Loops,Merge,Dataframe,我正在循环浏览一系列15个文件。我的循环如下所示: for (i in 1:length(mod.f)) { do some stuff dataframe `df` is produced } 循环的每次迭代将产生一个包含两列的数据框-日期和一些值,如下例所示: df <- structure(list(date = structure(c(-43829, -43798, -43770, -43739, -43709, -43678, -43648, -43617,

我正在循环浏览一系列15个文件。我的循环如下所示:

for (i in 1:length(mod.f)) {
    do some stuff
    dataframe `df` is produced
}
循环的每次迭代将产生一个包含两列的数据框-日期和一些值,如下例所示:

df <- structure(list(date = structure(c(-43829, -43798, -43770, -43739, 
-43709, -43678, -43648, -43617, -43586, -43556, -43525, -43495, 
-43464, -43433, -43405, -43374, -43344, -43313, -43283, -43252
), class = "Date"), inmcm4 = c(71.4782417258324, 68.5037706662898, 
64.0571482842429, 62.8708849771957, 66.3121740437669, 62.7535770507166, 
62.2819567665719, 62.3014754255822, 58.6247123853888, 58.4425949480101, 
61.3534245382973, 68.2531958750396, 70.4892992599108, 70.1840748468477, 
64.6298343911645, 66.5280510648649, 65.2767506692563, 62.8944646174169, 
60.4309882672837, 58.7368776782633)), .Names = c("date", "inmcm4"
), row.names = c(NA, 20L), class = "data.frame")
因此,并非所有日期(如df$日期)都相同

我希望在循环结束时将所有数据帧合并到一个数据帧中。最后一个数据框应该有一个
date
列,其余的列将是每个迭代的值,将NA分配给不重叠的日期

有什么办法吗

谢谢

你可以试试

 Reduce(function(...) merge(..., by='date', all=TRUE), lst)
其中
lst
是数据帧列表

数据
set.seed(24)

df2问题是每个循环生成一个数据帧(请参见OP上编辑的信息)。因此,我没有data.frames的列表,因此您可以将每次迭代的输出转移到
lst
,然后使用代码。使用
lappy
可能更容易。否则,请在开头定义一个列表<代码>lst成功了!我刚刚使用了
lst@thiagovelo,谢谢你的反馈。关于你的最后评论,你可以每天花10-15分钟用R解决问题,一段时间后会更容易。
 Reduce(function(...) merge(..., by='date', all=TRUE), lst)
set.seed(24)
df2 <- df[sample(1:nrow(df),8, replace=FALSE),]
row.names(df2) <- NULL
lst <- list(df, df2)