Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 简化嵌套lapply_R - Fatal编程技术网

R 简化嵌套lapply

R 简化嵌套lapply,r,R,我想将一个列表映射到一个列表列表并执行一个函数。目前我有嵌套的lapply,但我只是不喜欢它,如果可能的话,我想在一个映射中实现这一点。我已经创建了一个简化版本的代码,我把年份和日期粘贴在一起。实际上,我的函数是graster(),我正在创建一个光栅对象列表,按年份,然后按日期。谢谢你的帮助,或者给我指出我以前错过的帖子 我想简化的可复制代码示例- exmp1 <- list(list(4, 7,9), list(23, 28), list(5, 32, 82, 99)) exmp2 &l

我想将一个列表映射到一个列表列表并执行一个函数。目前我有嵌套的lapply,但我只是不喜欢它,如果可能的话,我想在一个映射中实现这一点。我已经创建了一个简化版本的代码,我把年份和日期粘贴在一起。实际上,我的函数是graster(),我正在创建一个光栅对象列表,按年份,然后按日期。谢谢你的帮助,或者给我指出我以前错过的帖子

我想简化的可复制代码示例-

exmp1 <- list(list(4, 7,9), list(23, 28), list(5, 32, 82, 99))
exmp2 <- list(1999, 2000, 2001)

exmp3 <- seq(from = 1, to = length(exmp1))
foo <- lapply(exmp3, function(w) { 
  lapply(exmp1[[w]], function(k){
    paste(exmp2[[w]], k)
    })})

exmp1我想你可以在这里使用
Map

Map(paste, exmp1, exmp2)
对于更复杂的函数,可以使用匿名函数包含更多的代码行

Map(function(x, y) paste(x, y), exmp1, exmp2)

我相信OP需要
Map(function(…)as.list(paste(…))、exmp2、exmp1)
。这对我的简化示例有效,但对我真正关心的函数,
foo在raster()函数中无效,因为y的长度大于1,只计算第一个元素,而不是计算x和y的每个值。是的,你可以做
Map(函数(x,y)lappy(y,函数(p)光栅(x,p)),exmp1,exmp2)
但是这和你的嵌套
lappy
没有什么不同。这仍然比我的第一个解决方案好,所以我称之为good。