Я думаю, что этот вопрос должен быть дополнен функцией poly/polym
, которая идет дальше: она генерирует не только взаимодействия между переменными, но и их мощность до выбранной степени. И ортогональных итераций , которые могут быть очень полезными.
Непосредственное решение поставленной задачи:
> polym(x$V1, x$V2, x$V3, x$V4, degree = 2, raw = T)
1.0.0.0 2.0.0.0 0.1.0.0 1.1.0.0 0.2.0.0 0.0.1.0 1.0.1.0 0.1.1.0 0.0.2.0 0.0.0.1 1.0.0.1 0.1.0.1 0.0.1.1 0.0.0.2
[1,] 1 1 9 9 81 25 25 225 625 18 18 162 450 324
[2,] 2 4 5 10 25 20 40 100 400 10 20 50 200 100
[3,] 3 9 4 12 16 30 90 120 900 12 36 48 360 144
[4,] 4 16 4 16 16 34 136 136 1156 16 64 64 544 256
attr(,"degree")
[1] 1 2 1 2 2 1 2 2 2 1 2 2 2 2
В столбцах 4, 7, 8, 11, 12, 13 есть запрошенный вопрос. Другие столбцы имеют другие виды взаимодействий. Если вы хотите получить ортогональные взаимодействия, просто установите raw = FALSE
.