Функция для перестановки векторов разных размеров в R - PullRequest
1 голос
/ 26 марта 2020

Я хочу создать , которая создает все возможные s различных векторов с элементами -1,0,1 для векторов разных размеров.

например, для векторов размера 2 тогда у меня будет 3^2 vectors. Это легко записать, как показано ниже, но если я хочу сделать это для векторов размера 6, мне нужно написать 729.

x1 = c(1,1)
x2= c(1,0)
x3 = c(1,-1)
x4 = c(0,0)
x5 = c(0,1)
x6 = c(0,-1)
x7= c(-1,1)
x8 = c(-1,0)
x9 = c(-1,-1)

Для векторов размера 3 ...

(1,1,1)
(1,1,0)
(1,1,-1)
(1,0,0)..... etc

Любые идеи, как я могу сделать это более упрощенным? Спасибо.

1 Ответ

3 голосов
/ 26 марта 2020

Вот один подход с expand.grid.

expand.grid(c(-1:1),c(-1:1),c(-1:1))

Или для векторов произвольной длины.

expand.grid(rep(list(c(-1:1)),4))
   Var1 Var2 Var3 Var4
1    -1   -1   -1   -1
2     0   -1   -1   -1
3     1   -1   -1   -1
4    -1    0   -1   -1
5     0    0   -1   -1
6     1    0   -1   -1
7    -1    1   -1   -1
8     0    1   -1   -1
9     1    1   -1   -1
10   -1   -1    0   -1
...