重塑lapply创建的列表

噻戈韦洛索

我有经度和纬度的向量:

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" ...

我该如何实现?

要复制的代码l1l2可以在以下位置找到:https : //pastebin.com/raw/LTyZi0mp(时间太长,无法在此处发布)

阿克伦

我们还可以gl用来为spliting创建分组索引

split(lst, as.integer(gl(length(lst1), 3, length(lst1))))

数据

lst1 <- replicate(9, list(list(x = 1:5, y = 1:5)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章