Ответ 1
Определим eaten
следующим образом:
eaten <- data.frame(person, foods, stringsAsFactors = FALSE)
1) Затем попробуйте следующее:
eaten %.% group_by(person) %.% do(function(x) combn(x$foods, m = 2))
даяние:
[[1]]
[,1] [,2] [,3]
[1,] "apple" "apple" "banana"
[2,] "banana" "cucumber" "cucumber"
[[2]]
[,1] [,2] [,3]
[1,] "spaghetti" "spaghetti" "cucumber"
[2,] "cucumber" "banana" "banana"
2) Чтобы сделать что-то рядом с тем, что @Hadley описывает в комментариях, не ожидая, что будущая версия dplyr попробует это, где do2
найдено здесь:
library(gsubfn)
eaten %.% group_by(person) %.% fn$do2(~ combn(.$foods, m = 2))
даяние:
$Grace
[,1] [,2] [,3]
[1,] "apple" "apple" "banana"
[2,] "banana" "cucumber" "cucumber"
$Rob
[,1] [,2] [,3]
[1,] "spaghetti" "spaghetti" "cucumber"
[2,] "cucumber" "banana" "banana"
Примечание. Последняя строка вопроса, дающая код в файле справки, также терпит неудачу для меня. Этот вариант работы для меня работает: do(jan, lm, formula = ArrDelay ~ date)
.