Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R列表与自身的交集_R_Unique_Intersection - Fatal编程技术网

R列表与自身的交集

R列表与自身的交集,r,unique,intersection,R,Unique,Intersection,我有一个名为my_list的列表,其中包含一个商店的名称和所有购买物品的客户的ID。我想要的是一个“共享”客户列表,一些列表如下所示: store1、store2、store1和store2客户的交叉点 我确实写过: my_list2<-lapply(my_list, function(x) lapply(my_list, function(y) intersect(x[[1]],y[[1]]))) 而不是 (store2,store1,shared customers). 我也不想要

我有一个名为my_list的列表,其中包含一个商店的名称和所有购买物品的客户的ID。我想要的是一个“共享”客户列表,一些列表如下所示: store1、store2、store1和store2客户的交叉点

我确实写过:

my_list2<-lapply(my_list, function(x) lapply(my_list, function(y) intersect(x[[1]],y[[1]])))
而不是

(store2,store1,shared customers).
我也不想要

(store1, store1, shared customers),
这只提供了从store1购买的所有客户的列表

最后,在我的清单2中,我希望只有那些行,其中商店至少有一个共享客户,所以没有空的交叉点


你能帮我吗?非常感谢如果您在列表中的索引之间循环,并且只计算与
x[[i]]
y[[j]]
的交点,这样
i
就不会有重复的。注意,仍然是n选择2
intersect
s,因此仍然是O(n^2*intersect)复杂性。 在索引之间循环可能如下所示

my_list <- list(a=1:10,b=5:14)
len <- length(my_list)

lapply(1:(len-1), function(i) 
    lapply((i+1):len, function(j) intersect(my_list[[i]], my_list[[j]])))

my_list您必须提供一些示例数据才能得到答案。
combn
可能使用某种匿名函数。我希望避免循环,因为它需要很多时间(我有一个4GB的数据文件),而且这个lappy可以工作faster@A.S-
lappy
是一个循环。我们仍然需要一些小的、有代表性的示例数据来准确地计算出您想要什么。因此,假设我有一个列表:(store1,cust1,cust2,cust3),(store2,cust1,cust4),(store3,cust4)我想要的是:(store1$store2,cust1),(store2$store3,cust4),所以没有像(store2$store1,cust1)这样的重复,也没有像这样的空交叉点(store1$store3,())谢谢,我做了这样的事情,但我真的不希望列表中的行有空的相交,你们知道怎么做吗?
my_list <- list(a=1:10,b=5:14)
len <- length(my_list)

lapply(1:(len-1), function(i) 
    lapply((i+1):len, function(j) intersect(my_list[[i]], my_list[[j]])))