У меня есть следующий список:декартово произведение, как в списке
lst = list(
cat = c("room","shower","garden"),
dog = c("street", "garden")
)
И я бы получить выход:
list(
list(
animal="cat",
place ="room"
),
list(
animal="cat",
place ="shower"
),
list(
animal="cat",
place ="garden"
),
list(
animal="dog",
place ="street"
),
list(
animal="dog",
place ="garden"
)
)
На данный момент, я использую следующий код:
library(plyr)
grasp <- function(animal, places)
{
llply(places, function(u) list(animal=animal, place=u))
}
Reduce(append, Map(grasp, names(lst), lst))
Но может быть что-то более элегантное/лаконичное/новее?
Я думаю, что ваш текущий метод довольно хорошо –