我有一个向量列表如下.
data <- list(v1=c("a", "b", "c"), v2=c("g", "h", "k"),
v3=c("c", "d"), v4=c("n", "a"), v5=c("h", "i"))
Run Code Online (Sandbox Code Playgroud)
我正在努力实现以下目标
1)检查任何矢量是否相互交叉.
2)如果找到相交的向量,得到它们的联合.
所以期望的输出是
out <- list(v1=c("a", "b", "c", "d", "n"), v2=c("g", "h", "k", "i"))
Run Code Online (Sandbox Code Playgroud)
我可以得到一组相交集的并集,如下所示.
Reduce(union, list(data[[1]], data[[3]], data[[4]]))
Reduce(union, list(data[[2]], data[[5]])
Run Code Online (Sandbox Code Playgroud)
如何首先识别交叉向量?有没有办法将列表划分为相交矢量组列表?
这是使用data.table的尝试.获得所需的结果.但是对于大型列表仍然很慢,就像在这个示例数据集中一样
datasets.
data <- sapply(data, function(x) paste(x, collapse=", "))
data <- as.data.frame(data, stringsAsFactors = F)
repeat {
M <- nrow(data)
data <- data.table( data , key = "data" )
data <- data[ , list(dataelement = unique(unlist(strsplit(data , ", …Run Code Online (Sandbox Code Playgroud)