Я получил вектор V <- c("a","b","c","d","e")
R: Как выполнить «внешний продукт» между вектором и списком
и список L
который выглядит следующим образом:
> str(L)
List of 2
$ A:List of 2
..$ alpha: num 1
..$ beta : num 2
$ B:List of 2
..$ alpha: num 1
..$ beta : num 2
мне нужно распространять из элементов V
Into L
как делают внешний продукт с массивами, так что он в конце концов выглядит следующим образом:
> str(L3)
List of 5
$ a:List of 2
..$ A:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "a"
..$ B:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "a"
$ b:List of 2
..$ A:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "b"
..$ B:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "b"
$ c:List of 2
..$ A:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "c"
..$ B:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "c"
$ d:List of 2
..$ A:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "d"
..$ B:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "d"
$ e:List of 2
..$ A:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "e"
..$ B:List of 3
.. ..$ alpha: num 1
.. ..$ beta : num 2
.. ..$ gamma: chr "e"
Уведомление-й в элементах из V не только появляются внутри каждого под-под-списка, но также служат в качестве имени каждого под-списка.
То, что я придумал это:
L3 <- lapply(V, function(x) lapply(L,function(y) c(y,gamma = x)))
L3 <- setNames(L3, V)
Вложенная lapply
функция выглядит некрасиво и нелогичным для меня. Я попытался устранить это, попробовав функцию outer
в базе R, но ясно, что это не работает. Поэтому я ищу решение, которое все еще «функционально», но более чистым и интуитивным. Благодаря!
P.S. Недавно я изучаю rlist
и нашел, что это очень удобно, поэтому решение rlist
также очень weclomed. @ Кун-жэнь
Похоже у вас есть очень хороший метод уже –
@RichardScriven На самом деле я заинтересован, чтобы увидеть 'rlist' решение. Я думаю, что это должно иметь какое-то отношение к 'list.map' и' list.update', но я не совсем понял, как перевести 'lapply' в' list.map'. – Benny
@RichardScriven Я видел ваш удаленный ответ. Это смешанный подход, но он, безусловно, информативный. Благодарю. – Benny