r - 从 R 中的向量中的元素创建唯一可能的组合
问题描述
我有一个包含 2 个元素的向量:
v1 <- c('X1','X2')
我想创建这些元素的可能组合。
生成的数据框如下所示:
structure(list(ID = c(1, 2, 3, 4), c1 = c("X1", "X2", "X1", "X2"
), c2 = c("X1", "X1", "X2", "X2")), class = "data.frame", row.names = c(NA,
-4L))
这里,ID=2 和 ID=3 的行具有相同的元素(但排列顺序不同)。我想将这两行视为重复的。因此,最终输出将只有 3 行。即3种组合
- X1, X1
- X1, X2
- X2, X2
在我的实际数据集中,向量 V1 中有 16 个这样的元素。
我尝试过使用expand.grid
方法来获得可能的组合,但这实际上超出了机器限制。(16 个元素的组合数量会太大)。这可能是由于上述重复。
有人可以在这里帮助获得所有可能的组合而没有任何重复吗?
我实际上正在寻找一种使用数据表功能的解决方案。我相信这真的可以更快
提前致谢。
解决方案
这是base R
使用您的示例 == 的解决方案data
:
首先,创建您的组合。使用unique = TRUE
减少组合的数量。
library(data.table)
data <- setDT(CJ(df$c1, df$c2, unique = TRUE))
然后,过滤掉重复项:
data[!duplicated(t(apply(data, 1, sort))),]
这给了我们:
V1 V2
1 X1 X1
2 X2 X1
10 X2 X2
推荐阅读
- html - 更新 HTML 列时如何修复 T-SQL 错误“'Trebuchet' 附近的语法不正确”
- java - 按键后如何控制edittext中的文本?
- java - ARCore 前置摄像头放置模型并在屏幕上移动它们(无锚点)
- typescript - 打字稿:扩展抽象类时的'this'
- list - 如何使用它们的时间戳列出目录中最近的两个文件夹
- python - 接收太多任务的芹菜工人
- powershell - Out-printer 命令导致 Zebra GK420d 打印机出现无休止的页面计数循环
- react-native - 如何使用 Redux 创建自定义警报?(警告:在现有状态转换期间无法更新)
- python - 有没有办法使用 SQLAlchemy 将列数据类型自动加载到 SQLite 中?
- r - 一个包含“reactivePoll”的闪亮应用程序可以在没有会话的情况下继续工作吗?