【发布时间】:2021-05-12 17:18:53
【问题描述】:
我有一个命名向量列表,其中每个向量名称对应于我要应用于向量的每个元素的函数。我可以使用以下代码完成此操作:
funs <- list(mean = c("mpg", "wt"),
var = c("qsec", "am"))
lapply(seq_along(funs), function(i){
fun <- get(names(funs)[i])
vars <- funs[[i]]
res <- lapply(vars, function(x){
fun(mtcars[[x]])
})
})
有没有更好的方法来做同样的事情?理想的解决方案是,按重要性排序,速度更快、内存效率更高且更紧凑。提前致谢。
【问题讨论】:
-
切换到
data.table将是提高速度的最佳选择。更多的上下文会有所帮助 - 这个输出真的是你想要的格式(嵌套列表)吗?您想以这种方式应用的函数是否可靠地聚合函数?funs列表的格式是固定的,还是您对其他输入选项开放? -
所有优秀的问题。输出可以是任何格式,只要(a)清楚哪些函数应用于哪些变量,并且(b)它可以很容易地转换为数据框。我要应用的函数可能是聚合函数或成对比较函数。 funs 列表的格式目前是固定的,但我对其他输入选项持开放态度。快速和内存效率的标准是最重要的,我愿意接受任何和所有可以改进我在这两个领域中发布的代码的解决方案。
标签: r