如何将两个列表的数据帧合并在一起(相同的列)

How to merge dataframes of two lists together (same columns)

我有一个包含 9 个具有相同列名的数据帧的列表(称为 datalist) 数据帧(称为 L01、L02、... L09)具有以下所有结构:

$L01
               time pressure    level abs_level
2021-04-22 00:00:00 21.05800 2.146454  12.33845
2021-04-22 00:15:00 21.09500 2.150225  12.34223
2021-04-22 00:30:00 21.04800 2.145435  12.33743
> str(datalist)
List of 10
 $ L01     :'data.frame':   9792 obs. of  4 variables:
  ..$ time     : POSIXct[1:9792], format: "2021-04-22 00:00:00" "2021-04-22 00:15:00" "2021-04-22 00:30:00" "2021-04-22 00:45:00" ...
  ..$ pressure : num [1:9792] 21.1 21.1 21 21 21 ...
  ..$ level    : num [1:9792] 2.15 2.15 2.15 2.14 2.14 ...
  ..$ abs_level: num [1:9792] 12.3 12.3 12.3 12.3 12.3 ...
 $ L02     :'data.frame':   9792 obs. of  4 variables:
  ..$ time     : POSIXct[1:9792], format: "2021-04-22 00:00:00" "2021-04-22 00:15:00" "2021-04-22 00:30:00" "2021-04-22 00:45:00" ...
  ..$ pressure : num [1:9792] 19.4 19.4 19.3 19.3 19.3 ...
  ..$ level    : num [1:9792] 1.97 1.98 1.97 1.97 1.97 ...
  ..$ abs_level: num [1:9792] 12.4 12.4 12.4 12.4 12.4 ...

...

我有一个类似的 addlist 具有相同结构(相同列和相同顺序)的相同 9 个数据帧(还有 L01、L02、... L09),但这些数据来自不同的时间时期。但我只想将 addlist 的数据帧合并到 datalist,以便将 addlist 的数据帧 L01 的行添加到 datalist 中 L01 的数据帧)、L02 到 L02,其余数据帧依此类推。

所以实际上很容易...我想。我无法在互联网上清楚地找到答案。我正在考虑使用 rbind,但我不知道如何在两个列表的上下文中使用它。

我该怎么做?有什么建议么?非常感谢!

这个有用吗?

finallist <- list()

for(i in 1:length(datalist)){
    finallist[[i]] <- rbind(datalist[[i]],addlist[[i]])
}

可能有更有效的方法来执行此操作,但如果您要合并的列表顺序相同且具有相同的列,则此方法应该有效

你可以使用

df <- do.call('rbind', your_list)

library(data.table)

df <- rbindlist(your_list)

您可以尝试下面的基本 R 代码

Map(rbind, datalist, addlist)

使用 tidyverse 中的 purrr,您可以尝试:

library(purrr)
map2(datalist, addlist, ~ rbind(.x, .y))