簡體   English   中英

在單個列表中組合不同列表的數據幀

[英]combine data frames of different lists in a single list

我有兩個(或更多)相同數量的數據幀列表,並希望將不同列表的數據幀組合在一個列表中。 因此,作為輸出,我想獲得與每個單獨列表中相同數量的數據幀的單個列表。

聽起來有點復雜,但基本上我想以可擴展和更簡單的方式做到這一點:

d1 <- data.frame(y1=c(1,2,3),y2=c(4,5,6))
d2 <- data.frame(y1=c(3,2,1),y2=c(6,5,4))
l1 <- list(d1,d2)
d3 <- data.frame(y1=c(11,22,33),y2=c(44,55,66))
d4 <- data.frame(y1=c(33,22,11),y2=c(66,55,44))
l2 <- list(d3,d4)

new_d1 <- do.call(rbind,list(l1[[1]],l2[[1]]))
new_d2 <- do.call(rbind,list(l1[[2]],l2[[2]]))
output <- list(new_d1,new_d2)

輸出應該如下所示:

> output
[[1]]
y1 y2
1  1  4
2  2  5
3  3  6
4 11 44
5 22 55
6 33 66

[[2]]
y1 y2
1  3  6
2  2  5
3  1  4
4 33 66
5 22 55
6 11 44

另外,如果l1和l2已經位於列表中,我可以使用哪個功能?

我已經看過lapply()sapply() ,但這兩個函數都不適合。 在論壇中,我只找到在單個數據框中組合數據幀列表的解決方案。

l1l2是全局環境中的列表的簡單情況下,您可以使用

Map(rbind, l1, l2)

對於另一種情況,當l1l2已經位於list ,您可以使用

l <- list(l1, l2)
Reduce(function(...) Map(rbind, ...), l)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM