繁体   English   中英

递归地将具有多个 arguments 的 Function 应用到 R 中的列表

[英]Recursively Apply a Function with multiple arguments to a List in R

我有一个嵌套列表,并希望将相同的函数应用于此列表的多个级别。 功能相当复杂,需要多个 arguments。

在这里,我发现了如何使用 rapply,尽管它对我有用。 不幸的是,rapply 只接受一个参数的函数。

这是 R 中的一个小例子:

嵌套列表:

x=list(1,list(2,3),4,list(5,list(6,7)))

具有多个 arguments 的功能:

doAddition <- function(listIterator,
                       list,
                       add){
  
  item <- list[listIterator]]
  out <- item + add
  return(out)
  
}

我会使用我列表第一级的 function,例如:

result <- lapply(seq_along(x), FUN = doAddition,
                 list = x, 
                 add = factor)

如何对所有列表级别使用相同的功能? 是否有替代 rapply 接受多个 arguments 的替代方案?

您通常不会遍历索引,而是遍历elements 一旦你这样做了,你的代码就可以直接翻译成rapply

rapply(x, `+`, ... = factor)

这不会列出结果。 如果要保留嵌套列表结构,请将how = 'list'传递给rapply

请注意,这不是使用您的自定义doAddition function ,因为一旦您遍历元素,就不需要 function 。 如果您的实际 function 更复杂,则同样适用:传递元素,而不是索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM