r - 如何选择性地执行函数并累积结果
问题描述
我想创建一个函数子组的结果向量。
这是我的意思的简化示例:
# create example functions
set.seed(999)
create_fun <- function(start, len) {
res <- function() {
seq(from = start, length.out = len)
}
res
}
for (i in 1:4) {
eval(parse(text = paste0("f", i, "<-create_fun(", sample(1:10, 1), ",", sample(2:5, 1), ")")))
# btw is it possible to use something like assign instead of eval-parse?
}
# static version of what I want
c(f1(), f3(), f4())
# 4 5 6 7 8 9 7 8
# dynamic version of what I want
x <- c(f1 = TRUE, f2 = FALSE, f3 = TRUE, f4 = TRUE) # I'd like to start with a vector of function-names to use
# .. but now what?
如何正确执行此操作?
解决方案
这是基础 R 中的解决方案:
unlist(lapply(names(x[x]), function(f) get(f)()))
[1] 4 5 6 7 8 9 7 8
首先选择要调用的函数的名称。对于它们中的每一个,get(function_name)()
允许对它们进行评估。
请看一下:为什么使用分配不好?
推荐阅读
- firebase - 如何通过 STM32CubeIDE 将 ESP8266 Wifi 模块连接到 Firebase
- excel - 查找金额的最大整数除数
- python - Python 3 bs4 爬行链接问题和字典列表问题
- laravel - 如何通过视图发送参数
- azure - 如何将 Word 文档从 FTP 导入 Azure 以运行脚本
- go - HackerRank 任务 Sales by Match 未通过测试
- excel - 如何根据 VBA 中的单元格内容设置元素 ID?
- c++ - 与 C++ 相比,Haskell 运行速度非常慢
- php - 日期和状态通过 PHP 中的 curl 提交空值
- monaco-editor - 如何覆盖编辑器服务