неупорядоченная комбинация и сохранить результат в матрице в r - PullRequest
0 голосов
/ 04 декабря 2018

Скажем, у меня есть список (a, b, c), я хочу выяснить все возможные их комбинации и сохранить в виде матрицы:

      a b c
 [1,] 1 0 0
 [2,] 0 1 0
 [3,] 0 0 1
 [4,] 1 1 0
 [5,] 1 0 1
 [6,] 0 1 1
 [7,] 1 1 1`

Я не знаю, как это сделать,Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Чтобы сделать именно то, что вы хотите, используйте permutations в пакете gtools.Это работает следующим образом:

m <- permutations(2, 3, v=c(0,1), repeats.allowed=T)
colnames(m) <- c('a','b','c')
# delete [0,0,0]
m <- m[-1,]

Выход:

     a b c
[1,] 0 0 1
[2,] 0 1 0
[3,] 0 1 1
[4,] 1 0 0
[5,] 1 0 1
[6,] 1 1 0
[7,] 1 1 1 
0 голосов
/ 04 декабря 2018

Идея была взята из раздела комментариев под этим вопросом: Создайте все комбинации длины 2, используя 3 буквы

Моя адаптация не очень элегантна ... но, похоже, онаработа.

output <- expand.grid(rep(list(c('a', 'b', 'c')), 3))
colnames(output) <- c('a', 'b', 'c')
for (col in colnames(output)) { 
  output[, col] <- as.character(output[,col])
  output[, col] <- ifelse(output[, col]==col, 1, 0)
}
output <- output[!duplicated(output), ]
rownames(output) <- NULL
print(output)
# a b c
# 1 1 0 0
# 2 0 0 0
# 3 1 1 0
# 4 0 1 0
# 5 1 0 1
# 6 0 0 1
# 7 1 1 1
# 8 0 1 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...