我有一个函数列表:
func1 <- function(u)
{
list(val=u, ref="XX1")
}
func2 <- function(u)
{
list(val=u*u, ref="XX55")
}
func3 <- function(u)
{
list(val=u-1, ref="XX3")
}
我想用 u=2
得到这样的结果:
list(XX55=4, XX3=1, XX1=2)
目前我是这样进行的:
funcs = c(func1, func2, func3)
temp = llply(funcs, function(f) f(2))
res = llply(temp, function(u) u$val)
names(res) = llply(temp, function(u) u$ref)
res
但也许有更优雅/简洁的方式进行?
最佳答案
你可以使用sapply
:
sapply(funcs, function(f) {tmp <- f(2); setNames(list(tmp$val), tmp$ref)})
# $XX1
# [1] 1
#
# $XX55
# [1] 341
#
# $XX3
# [1] 11
关于r - 循环函数以构建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480142/