r - 如何对 data.table 行应用组合函数来提取和记录另一个 data.table 中的不同可能性?
问题描述
我遇到了一个问题,在以前的帖子中找不到合适的方法来解决它。我有下面的数据表,其中有一列:
listOfRules
1: a, fire, addAfter, b
2: b, storm, addAfter, c
3: c, storm, remove
我想找到一种方法来获取另一个数据表中每一行中的元素组合,如下所示。基本上,我想先得到每一行,然后两两,然后像这样继续,直到最后我得到所有的选项。
x1 x2 x3
1. a, fire, addAfter, b NA NA
2. b, storm, addAfter, c NA NA
3. c, storm, remove NA NA
4. a, fire, addAfter, b b, storm, addAfter, c NA
5. a, fire, addAfter, b c, storm, remove NA
6. b, storm, addAfter, c c, storm, remove NA
7. a, fire, addAfter, b b, storm, addAfter, c c, storm, remove
我会很感激你在这方面的帮助。
解决方案
这是base R中的一个简单方法
v <- letters[1:3]
lenV <- length(v)
do.call(rbind, lapply(1:lenV, function(x) {
mat <- t(combn(v, x))
if (ncol(mat) < lenV)
cbind(mat, replicate(lenV - ncol(mat), rep(NA, nrow(mat))))
else
mat
}))
推荐阅读
- redux-saga - 将一项行动置于其他行动之前
- mule - 如何计算骡子的最小值
- android - 防止现有文件在 Git 中获得更新
- android - hdpi 设备上 RecyclerView espresso 测试中的 NullPointerException
- c# - 将参数传递给 C# 和 SQL Server 2005 中的 In 查询
- json - 为什么 Wayback Machine Json API 只返回空的 "archived_snapshots": {} 元素?
- python - 根据python中辅助列的值添加和平均一组列
- spring - 如何跨 Spring Security 重定向保留备用域名 - Spring Security SAML
- c# - 使用 C# Windows 10 是否可以判断视频/相机当前是否被任何应用程序使用?
- tfs - Azure Devops - 无法获取部署状态