Выполнить «перекрестное произведение» двух векторов, но с добавлением - PullRequest
3 голосов
/ 13 июля 2011

Я пытаюсь использовать R для выполнения операции (в идеале с аналогичным отображаемым выводом), такой как

> x<-1:6
> y<-1:6
> x%o%y
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3    4    5    6
[2,]    2    4    6    8   10   12
[3,]    3    6    9   12   15   18
[4,]    4    8   12   16   20   24
[5,]    5   10   15   20   25   30
[6,]    6   12   18   24   30   36

, где каждая запись находится путем сложения, а не умножения.

Мне также было бы интересно создать 36 упорядоченных пар (1,1), (1,2) и т. Д.

Кроме того, я хочу использовать другой вектор, например * 1008.*

z<-1:4

для создания всех возможных упорядоченных триплетов между x, y и z.

Я использую R, чтобы изучить вероятности возможного итога при бросании костей с различным количеством размеров.

Спасибо за вашу помощь!Этот сайт мне очень помог.Я ценю любого, кто находит время, чтобы ответить на вопрос незнакомца.

ОБНОВЛЕНИЕ Итак, я обнаружил, что `external (x, y, '+') будет делать то, что я хотел первым.Но я до сих пор не знаю, как создавать упорядоченные пары или упорядоченные триплеты.

Ответы [ 2 ]

14 голосов
/ 13 июля 2011

Ваш первый вопрос легко обрабатывается с помощью outer:

outer(1:6,1:6,"+")

Для остальных я предлагаю вам попробовать expand.grid, хотя существуют специальные функции комбинирования и перестановки, если вы это сделаетенемного поиска.

13 голосов
/ 13 июля 2011

expand.grid может ответить на ваш второй вопрос:

expand.grid(1:6,1:6)
expand.grid(1:6,1:6,1:4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...