【发布时间】:2020-11-13 11:40:10
【问题描述】:
例如,我在一个列表中有 5 个向量:
A <- c(1,2,3,4,5)
B <- c(1,2,3,4,5,6)
C <- c(5,6,7,8,9)
D <- c(8,9)
实际上,我有 100 个这些向量,但我只给出了 5 个向量以实现可重复性。 我的目标是:
- 识别来自向量的唯一元素。例如,
vector A不应该返回任何内容,因为它的所有元素都是vector B的一部分,但是vector B确实贡献了一个额外的独特元素,那就是6。Vector C应该给我7,8,9,因为c(5,6)已经包含在vector B中。Vector D应该什么都不返回,因为它的所有元素都是 C 的一部分 - 从哪个向量中识别哪个元素是唯一的
- 找出哪些向量是其他更大向量的子集。例如,
vector D是C的子集,vector A是vector B的子集。
到目前为止,我找到的唯一解决方案是:
Reduce(setdiff, list("my_vectors"))
但是它不允许我从哪个向量中识别出哪个元素是唯一的。例如,Reduce(setdiff, list(A,B)) 会返回6,但我不知道6 来自哪里(A 或B)?
我的困难在于这是一个大规模的问题,我没有 5 个向量,我有 100 个向量,所以我无法找到可持续的解决方案。任何提示都表示赞赏。
编辑:我的向量在一个列表中
【问题讨论】:
-
向量是在
.GlobalEnv中还是在列表中? -
它们在一个列表中。所以我有一个向量列表。
-
在您的示例中,没有独占密码。
-
这没有很好的定义:例如 A 不应该返回任何东西,因为 B 包含 A 中的所有元素,但 B 应该返回 6。但是,6 也包含在 C 中。所以这里唯一真正唯一的你有的元素是 C 中的 7 对吗?
-
没错。这是相当模棱两可的。
标签: r list vector unique data-mining