【发布时间】:2021-07-17 12:47:35
【问题描述】:
我有一个嵌套列表,并希望将相同的函数应用于此列表的多个级别。这些函数非常复杂,需要多个参数。
Here 我发现了 rapply 是如何使用的,尽管它对我很有用。不幸的是,rapply 只接受单个参数的函数。
这是 R 中的一个小例子:
嵌套列表:
x=list(1,list(2,3),4,list(5,list(6,7)))
具有多个参数的函数:
doAddition <- function(listIterator,
list,
add){
item <- list[listIterator]]
out <- item + add
return(out)
}
我会使用我列表第一级的这个功能,例如:
result <- lapply(seq_along(x), FUN = doAddition,
list = x,
add = factor)
如何对我的所有列表级别使用相同的功能? 有没有接受多个参数的 rapply 替代方法?
【问题讨论】:
-
rapply确实接受多个参数。您的功能似乎也比必要的复杂。为什么迭代索引而不是列表?也就是说,你为什么不简单地做lapply(x, `+`, factor)?这与您的代码相同,甚至不需要单独的函数。它也适用于rapply:rapply(x, `+`, how = 'list', ... = factor)。 -
根据文档 rapply 不接受多个参数:web.mit.edu/~r/current/arch/i386_linux26/lib/R/library/base/…。还是我错过了什么?如何在 rapply 中传递多个参数?这个例子中的函数是一个更复杂函数的简化
-
您链接的文档显示“
...附加参数传递给f的调用。”