从包含数据框的列表中获取交集

3
我有一个列表,其中每个元素都是数据框。
> df.list[[1]]
      Change       Diff          VarName
1  10.433354  5.311973e-02         a
2   4.587958  1.517604e-02         b
3   4.566829  1.082679e-02         c
4   4.464458  1.345807e-02         d
5   4.146909  7.758011e-03         e
6   4.141556  1.416043e-02         f

> df.list[[2]]
      Change       Diff          VarName
1  12.443354  5.311973e-02         j
2   3.587958  1.517604e-02         k
3   4.566829  1.082679e-02         a
4   4.464458  1.345807e-02         b
5   3.146909  7.758011e-03         d
6   2.141556  1.416043e-02         e

我的列表长度为10,其中有10个数据帧。每个数据帧都有30个项目。 我想要将每个数据帧的前25个交集到另一个数据帧中,并最终获得所有数据框中最常见的项目。

目前我已经完成了以下工作:

df1 <- df.list[[1]]$VarName
df2 <- df.list[[2]]$VarName
df3 <- df.list[[3]]$VarName
df4 <- df.list[[4]]$VarName

intersect(intersect(intersect(df1,df2), df3), df4)

有没有使用dplyr或其他工具完成这个任务的方法?
1个回答

5
尝试在基础 R 中使用 Reduce
ls <- vector("list", 10)
for (i in 1:10) ls[[i]] <- head(df.list[[i]]$VarName, 25)
Reduce(intersect, ls)

或者是单行代码:
Reduce(intersect, lapply(df.list, function(x) head(x$VarName, 25)))

在一行中,Reduce(function(x, y) intersect(x, head(y$varname, 25)), dfList, init=letters),其中init值包含可能性的宇宙。 - lmo
1
谢谢@Imo,与此同时,我正在考虑一个一行代码,现在已经添加了。 - 989

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接