当前位置:  开发笔记 > 编程语言 > 正文

从包含数据框的列表中设置交集

如何解决《从包含数据框的列表中设置交集》经验,为你挑选了1个好方法。

我有一个列表,列表中的每个元素都是一个数据框.

> 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个项目.我希望intersect每个数据框的前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> 989..:

试试Reduce基地R:

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)))

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有