r - 循环函数以构建列表

标签 r plyr

我有一个函数列表:

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/

相关文章:

r - 在 ddply 汇总之前从数据帧中选择范围(时间戳)

r - freq() 在打印期间重命名列

根据多个条件替换 data.frame 上的值

r - 按频率绘制因子

r - R 中的分组列和求和值

java - 使用 RServe 从 Java 调用 R 奇怪的错误

r - 在 R 中取消列出并保留完整的列表名称

r - 将一个数据集中的缺失值(NA)替换为另一列中匹配的值

r - R:将数据框的每一行转换为一个列表项

javascript - R - 如何在网站上运行 javascript 按钮以显示所有要抓取的值