gpt4 book ai didi

r - R 中数据帧列表的交叉

转载 作者:行者123 更新时间:2023-12-02 04:06:45 25 4
gpt4 key购买 nike

R中是否有一个函数可以将具有不同列数的多个数据框的列表相交并返回具有匹配列的多个数据框的列表?

作为示例,我有以下列表:

ll <- list(structure(list(V1 = c(8L, 2L, 7L), V2 = c(1L, 9L, 3L), V3 = 4:6), .Names = c("V1", "V2", "V3"), row.names = c(NA, -3L), class = "data.frame"), structure(list(V1 = c(1L, 3L, 2L), V2 = c(5L, 4L, 6L)), .Names = c("V1", "V2"), row.names = c(NA, -3L), class = "data.frame"))

> ll
[[1]]
V1 V2 V3
1 8 1 4
2 2 9 5
3 7 3 6

[[2]]
V1 V2
1 1 5
2 3 4
3 2 6

结果列表应该给出:

> new.ll
[[1]]
V1 V2
1 8 1
2 2 9
3 7 3

[[2]]
V1 V2
1 1 5
2 3 4
3 2 6

谢谢。

最佳答案

应该有更好的替代方案。不过,现在我能想到的就只有这些了。

mincol <- Reduce(intersect, lapply(ll, colnames))
lapply(ll, function(x) x[mincol])

#[[1]]
# V1 V2
#1 8 1
#2 2 9
#3 7 3

#[[2]]
# V1 V2
#1 1 5
#2 3 4
#3 2 6

使用intersect找出常见的列名称,然后在列表中的所有数据帧中仅选择那些列名称。

关于r - R 中数据帧列表的交叉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39143518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com