r - 从翻转对象中提取交叉点列表

标签 r set-intersection set-operations upsetr

我正在与 UpSetR 进行一些比较,我想保存落入每个交集的元素列表。这可能吗?我在任何地方都找不到...
手动执行(许多列表)会非常乏味,而且由于无论如何它们都是计算出来的,因此无法保存它们令人沮丧

最佳答案

(yet) 没有现成的 upSetR 函数.但是,可以提取它:

library(UpSetR)

# Example input as list, expected output is 1 and 5:
listInput <- list(one = c(1, 2, 3, 5, 7, 8, 11, 12, 13), 
                  two = c(1, 2, 4, 5, 10),
                  three = c(1, 5, 6, 7, 8, 9, 10, 12, 13))
当分配的扰动返回一个值时,该值还包括以下数据:
x <- upset(fromList(listInput))
x$New_data
#    one two three
# 1    1   1     1
# 2    1   1     0
# 3    1   0     0
# 4    1   1     1
# 5    1   0     1
# 6    1   0     1
# 7    1   0     0
# 8    1   0     1
# 9    1   0     1
# 10   0   1     0
# 11   0   1     1
# 12   0   0     1
# 13   0   0     1
从这里我们可以看到它是第 1 行,在所有三个集合中都找到了第 4 行。项目的顺序是根据它们在列表中出现的顺序定义的,请参阅:
x1 <- unlist(listInput, use.names = FALSE)
x1 <- x1[ !duplicated(x1) ]
x1
# [1]  1  2  3  5  7  8 11 12 13  4 10  6  9
现在我们知道来自“New_data”的行号在我们的列表中引用。因此,由于我们有 3 列,过滤总和为 3 的行:
x1[ rowSums(x$New_data) == 3 ]
# [1] 1 5
我们可以只使用 Reduce:
Reduce(intersect, listInput)
# [1] 1 5

关于r - 从翻转对象中提取交叉点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65027133/

相关文章:

jpa - 如何使用 Criteria Query 获取相交查询?

c++ - 为什么编译器在我的 set_intersection 上给我一个错误?

java - 将一组分配给另一组以及执行清除时。两个组都被清除

R Shiny 传递响应式(Reactive)到 selectInput 选择

Python:基于交集的简单列表合并

r - 如何在给定格子条件的情况下绘制叠加多个时间序列?

r - R中列表中相交向量的并集

python - Numpy:有效地找到行式公共(public)元素

r - 为什么会出现此错误消息?

r - 基于向量的下一个值的条件 cumsum