【发布时间】:2017-07-07 06:55:03
【问题描述】:
我正在尝试计算数据集中每个行组合中的公共元素。我设法使用嵌套循环来做到这一点,该循环适用于小型数据集,但对于真正的数据集(1380 * 1380 组合)需要太长时间。我想知道是否有一种直接且计算量较小的方法来做到这一点。
a <- c(1,5,6,8,9)
b <- c(4,3,6,8,2)
c <- c(4,3,6,1,9)
df <- rbind(a,b,c)
结果应该是这样的
data.frame(p1= c('a','a','a','b','b','b','c','c','c'),
p2= c('a','b','c','a','b','c','a','b','c'),
res= c(5,2,2,2,5,3,2,3,5))
如果去掉self之间的比较就更好了。 非常感谢您的帮助!
【问题讨论】:
-
你能详细说明一下这个例子吗?我不明白为什么输出的第一行是
1 1 5:前两列包含数据集不同元素的笛卡尔积,对吧?但是我真的看不懂5... -
@RobertoB 你运行你的循环并计时了吗?我的意思是无论如何这都是一个相当繁重的操作,所以也许一些基准会很好?
-
对不起,如果不清楚@Bruno,
5代表两行之间共有的元素数(在这种情况下为 1 和 1)。 -
@friep 我对数据集的前 13 行做了一些基准测试,结果如下:
option 1 (my loop) - rep: 100, elapsed: 4.43;option 2 (as suggested by@Sotos-rep: 100; elapsed: 16.58