相关疑难解决方法(0)

R中列表中交叉向量的联合

我有一个向量列表如下.

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)

r list lapply set-operations data.table

15
推荐指数
4
解决办法
1992
查看次数

标签 统计

data.table ×1

lapply ×1

list ×1

r ×1

set-operations ×1