Как применить комбинированную функцию к строкам data.table, чтобы извлечь и записать различные возможности в другой data.table? - PullRequest
2 голосов
/ 08 июля 2019

Я столкнулся с проблемой и не смог найти подходящий способ ее решения в предыдущих постах. У меня есть таблица данных ниже, в которой есть один столбец:

             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

Буду признателен за помощь.

1 Ответ

0 голосов
/ 08 июля 2019

Вот простой подход в базе 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
}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...