首页 > 解决方案 > 如何对 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

我会很感激你在这方面的帮助。

标签: rlistdata.tablecombinationscombn

解决方案


这是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
}))

推荐阅读