所有与列表值的所有设置交集

时间:2016-06-03 18:47:47

标签: r dataframe

我有一个包含数据框L的列表L=(A,B,C,D)。每个数据框都有一列z。我想在列z中执行一组值的交集,并计算列表中数据帧的每个成对比较的数字。 (即共享的值)这样我得到了一个最终矩阵

  A B C D 
A  
B 
C   
D

矩阵的值包含共享值的总和。我不确定使用R实现此方法的最惯用方法是哪种。我可以做一个for循环,我从列表的第一个成员开始,提取列z的值执行一个集合交集并填充一个空矩阵。但可能有更好的方法。

任何想法和实施?

示例:

df1 <- data.frame(z=c(1,2,3),s=c(4,5,6))
df2 <- data.frame(z=c(3,2,4),s=c(6,5,4))
my.list <- list(df1, df2)

预期产出

    df1 df2
df1  3  2
df2  2  3

1 个答案:

答案 0 :(得分:2)

您可以尝试outer功能:

outer(my.list, my.list, function(x, y) Map(function(i, j) length(intersect(i$z, j$z)), x, y))
    df1 df2
df1 3   2  
df2 2   3