R 多对整数向量相交
我有一个整数向量列表: 这部分速度非常快,可以使用 然后我运行此函数以获得所需的输出: res.df尝试将l表示为1/0矩阵:R 多对整数向量相交,r,list,intersection,combn,R,List,Intersection,Combn,我有一个整数向量列表: 这部分速度非常快,可以使用 然后我运行此函数以获得所需的输出: res.df尝试将l表示为1/0矩阵: max.val = max(sapply(l, max)) mat = do.call(rbind, lapply(l, function(x) {z = rep(0, max.val); z[x] = 1; z})) 现在,您可以轻松地预先计算成对交点和并集: pair_intsct = mat %*% t(mat) pair_union = outer(rowS
max.val = max(sapply(l, max))
mat = do.call(rbind, lapply(l, function(x) {z = rep(0, max.val); z[x] = 1; z}))
现在,您可以轻松地预先计算成对交点和并集:
pair_intsct = mat %*% t(mat)
pair_union = outer(rowSums(mat), rowSums(mat), '+') - pair_intsct
我的示例数据中哪一部分不小或不可复制?@dan你的示例很好。只是有人没有正确阅读:-对于您的特定问题,一个选项是combnPrim,如@akrun所示,combn部分不是瓶颈。计算并集上的交集和每对之间的超几何p值是一个问题。我编辑我的问题是为了弄清楚为什么超几何分布的m,n和k参数是lengthl[[idx.mat[I,1]],lengthl[[idx.mat[I,1]]]+lengthl[[idx.mat[I,2]]和lengthl[[idx.mat[I,2]],你能解释一下吗?
max.val = max(sapply(l, max))
mat = do.call(rbind, lapply(l, function(x) {z = rep(0, max.val); z[x] = 1; z}))
pair_intsct = mat %*% t(mat)
pair_union = outer(rowSums(mat), rowSums(mat), '+') - pair_intsct