【发布时间】:2020-07-15 15:34:27
【问题描述】:
我有带经纬度的向量:
longDim
[1] -79.65770 -79.21761 -78.77750
latiDim
[1] -39.70588 -39.26471 -38.82353
我想并行循环它们的组合。为此,我首先使用expand.grid 创建了一个包含所有可能组合的数据框:
my.grid <- expand.grid(longDim, latiDim)
然后我在结果数据框的行上使用了mclapply():
mclapply(1:nrow(my.grid), function(x){some_function})
其中some_function 返回一个包含两个对象的列表,每个对象的长度为 139。
因此,我得到了一个尺寸为 9x2 的嵌套列表,如下所示:
str(l1)
List of 9
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 2
..$ su.25: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ su.30: Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
现在,我需要再次将此列表从 9x2 重新调整为 3x3x2 维度。这是我正在寻找的格式:
str(l2)
List of 3
$ :List of 3
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 3
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
$ :List of 3
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
..$ :List of 2
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
.. ..$ : Named num [1:139] 0 0 0 0 0 0 0 0 0 0 ...
.. .. ..- attr(*, "names")= chr [1:139] "1961" "1962" "1963" "1964" ...
我怎样才能做到这一点?
重现l1 和l2 的代码可以在:https://pastebin.com/raw/LTyZi0mp 找到(这里太长,无法发布)
【问题讨论】:
标签: r list lapply reshape mclapply