Это еще один вопрос из неупорядоченной комбинации и сохранения результата в матрице в r .
Теперь у меня есть кадр данных, как показано ниже
>head(plan)
bal midway coro cab ljc ot
1 1 1 1 2 2 2
2 1 1 2 1 1 2
3 1 1 2 1 2 2
4 1 1 2 2 1 2
5 1 1 2 2 2 1
6 1 2 1 1 2 2
Я хочу извлечь элементы в каждой строке, которые равны 1, использовать имя столбца и переставить их, чтобы сохранить в новом кадре данных, скажем day_1_1
для первой строки:
> permutations(3, 3, v = names(plan)[which(plan[1,] == 1, arr.ind=T)[, "col"]])
[,1] [,2] [,3]
[1,] "bal" "coro" "midway"
[2,] "bal" "midway" "coro"
[3,] "coro" "bal" "midway"
[4,] "coro" "midway" "bal"
[5,] "midway" "bal" "coro"
[6,] "midway" "coro" "bal"
Моя проблемаЯ не знаю, как создать новый цикл данных с именем day_1_i
(i
соответствует номеру строки в plan
) в цикле.Я пробовал
for (i in 1:nrow(plan)) {
paste0("day_1_", i) <- permutations(3, 3, v = names(plan)[which(plan[i,] == 1, arr.ind=T)[, "col"]])
}
Но это не работает.Я видел одно возможное решение с использованием assign
из Использование цикла для создания нескольких фреймов данных в R , но предлагается не использовать.Большое спасибо за совет!