我有一个包含数据框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
答案 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