如何在 R 中绑定子列表

How to rbind sublists in R

我有一个数据帧列表列表。我正在尝试做的事情可以描述如下:

rbind(datalistpairs[[1]][[1]][[1]],datalistpairs[[1]][[2]][[1]],datalistpairs[[1]][[3]][[1]])

我的子列表有 j 个长度,所以实际上我正在尝试(j 次):

rbind(datalistpairs[[1]][[1]][[1]],
datalistpairs[[1]][[2]][[1]],
datalistpairs[[1]][[3]][[1]],...,
datalistpairs[[1]][[j]][[1]])

最有效的方法是什么?

三次迭代的输出创建了一个如下所示的数据框:

      LAT    LON
   31  43.1818 5.2348
   311 43.1818 5.2348
   312 43.1818 5.2348

编辑:我提供以下示例数据

datalistpairs = list(list(list(l1 = data.frame(LAT = 1, LON = 2), 
                               l2 = data.frame(LAT = 1, LON = 2)),
                          list(l1 = data.frame(LAT = 1, LON = 2), 
                               l2 = data.frame(LAT = 1, LON = 2))),
                     list(list(l1 = data.frame(LAT = 1, LON = 2), 
                               l2 = data.frame(LAT = 1, LON = 2)),
                         list(l1 = data.frame(LAT = 1, LON = 2), 
                              l2 = data.frame(LAT = 1, LON = 2))))

我的目标是:

rbind(datalistpairs[[1]][[1]][[1]],datalistpairs[[1]][[2]][[1]]) 

希望对您有所帮助。

使用map()提取每个子列表的第一个元素。

library(purrr)

datalistpairs[[1]] %>% map_dfr(~ .[[1]])

#   LAT LON
# 1   1   2
# 2   1   2

对应的base R解:

do.call(rbind, lapply(datalistpairs[[1]], `[[`, 1))

编辑: 如何应用到 datalistpairs[[i]] where i = 1, 2, 3, ..., n

lapply(1:n, function(i){
  do.call(rbind, lapply(datalistpairs[[i]], `[[`, 1))
})