【发布时间】:2018-11-20 21:24:45
【问题描述】:
目前,使用for loop,我吐出了多个数据帧,都带有名称
res_[Insert some date]
例如在我的环境中:
res_2018-04-01
res_2018-05-01
res_2018-06-01
每个数据框都有 1 行 25 列。第一列是文件上传的日期(因此对于第一个数据框,该列的值为 2018-04-11),随后的列是文件上传日期之前的 24 个月。
在 for 循环运行后,我想合并所有创建的数据框,而无需手动输入这些数据框的名称。因此,例如,我可以合并所有名称为 res_%
所以我的最终数据框将有 27 列和(在本例中)3 行。
有什么建议吗?
编辑:这是 dput(res_2018-04-11) 的输出
dput(`res_2018-04-11`)
structure(list(UploadDate = "2018-04-11", `2016-03-01` = 4822598.18735351,
`2016-04-01` = 4022970.75519652, `2016-05-01` = 4471569.0873137,
`2016-06-01` = 4762693.19167908, `2016-07-01` = 3799649.58966077,
`2016-08-01` = 4667486.94228869, `2016-09-01` = 4748252.38636671,
`2016-10-01` = 3953585.1499195, `2016-11-01` = 5258338.05699641,
`2016-12-01` = 4529140.27998058, `2017-01-01` = 3334021.87730489,
`2017-02-01` = 4842435.58785495, `2017-03-01` = 5430798.18389053,
`2017-04-01` = 4045150.70691188, `2017-05-01` = 4660901.62683975,
`2017-06-01` = 4684489.25953388, `2017-07-01` = 3680375.93521103,
`2017-08-01` = 5231564.19023014, `2017-09-01` = 4073906.09821191,
`2017-10-01` = 5440655.92109229, `2017-11-01` = 4996844.57817061,
`2017-12-01` = 5087355.28846096, `2018-01-01` = 2895616.00464724,
`2018-02-01` = 3766770.55063743), .Names = c("UploadDate",
"2016-03-01", "2016-04-01", "2016-05-01", "2016-06-01", "2016-07-01",
"2016-08-01", "2016-09-01", "2016-10-01", "2016-11-01", "2016-12-01",
"2017-01-01", "2017-02-01", "2017-03-01", "2017-04-01", "2017-05-01",
"2017-06-01", "2017-07-01", "2017-08-01", "2017-09-01", "2017-10-01",
"2017-11-01", "2017-12-01", "2018-01-01", "2018-02-01"), row.names = c(NA,
-1L), class = "data.frame")
【问题讨论】:
-
如果您在问题中分享来自
dput(res_2018-04-01)、dput(res_2018-05-01)和dput(res_2018-06-01)的输出,将会很有用。 -
首先,将它们放在一个列表中:
my_list = mget(ls("res_.*")),然后是use your favorite of these answers。请注意,如果您从一开始就将它们放在list中,那么您使用for循环来制作这些数据帧可能会被简化。见my answer here for details。 -
虽然“合并”似乎是指“堆栈”-
merge是进行连接的基本 R 函数,但您可能只需要rbind。do.call(rbind, my_list)(这是我之前评论的第二个链接中使用的示例)。 -
这是有道理的。但是当我运行
do.call(rbind, my_list)时,它给了我 1 列 75 行。我需要 27 列 3 行 -
获得列表后,您可以使用
plyr::rbind.fill,如本问题所述:stackoverflow.com/questions/3402371/…