Пример: как Binary Tree Traversal в R - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть 7 пар переменных: т.е.

["F1", "R1"] ["F2", "R2"]["F3", "R3"]["F4", "R4"]["F5", "R5"]["F6", "R6"]["F7", "R7"]

И хотел бы генерировать векторы из 7 переменных, где каждая переменная выбирается из каждой группы.

Цель состоит в том, чтобы сгенерировать эргодическую последовательность векторов (в этом случае будет 2^7 = 128 возможностей.

Ожидаемые результаты:

     [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]
[1,] 'F1'  'F2'  'F3'  'F4'  'F5'  'F6'  'F7'
[2,] 'F1'  'F2'  'F3'  'F4'  'F5'  'F6'  'R7'
[3,] 'F1'  'F2'  'F3'  'F4'  'F5'  'R6'  'F7'
[4,] 'F1'  'F2'  'F3'  'F4'  'F5'  'R6'  'R7'
[5,] 'F1'  'F2'  'F3'  'F4'  'R5'  'F6'  'F7'
[6,] 'F1'  'F2'  'F3'  'F4'  'R5'  'F6'  'R7'
...

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете заполнить matrix одним for -циклом. Вы просто просматриваете каждый столбец и заполняете их, повторяя пары с помощью функции rep. Я параметризовал код так, чтобы количество пар могло варьироваться:

pairs <- list(c("F1", "R1"), c("F2", "R2"), c("F3", "R3"), c("F4", "R4"),
               c("F5", "R5"), c("F6", "R6"), c("F7", "R7"))
dimension <- 7 
mat <- matrix(0,2^dimension, dimension)
for(i in 1:dimension){
   mat[,i] <- rep(pairs[[i]], each= 2^(dimension-i))
 }
...