[英]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.