r - 在 R 中使用嵌套函数的高效代码
问题描述
我想知道在使用嵌套函数时,R 中什么更有效。本质上,我有三个函数 f1、f2、f3。f3 使用 f2 本身使用 f1
我有两个选择是:
- 分别定义 f1、f2、f3。然后使用 f3,它将使用环境中预定义的 f1 和 f2
- 定义f3,并在f3的代码中包含f1和f2,然后使用f3
据您所知,这些方法中的一种是否比另一种更有效?
非常感谢
解决方案
谢谢你。我不知道这个功能。我只使用 2 个函数 f1 和 f2 运行了以下命令:
f1 <- function(x) {
y <- x + 2
return(y)
}
f2 <- function(y){
x = 3
z <- y + 3 + f1(x)
return(z)
}
哪个返回
> microbenchmark::microbenchmark(f2(2))
Unit: nanoseconds
expr min lq mean median uq max neval
f2(2) 737 754 47665.41 798.5 910.5 4667754 100
相对于
f3 <- function(y){
f4 <- function(x) {
y <- x + 2
return(y)}
x = 3
z <- y + 3 + f4(x)
return(z)
}
这似乎有点慢
> microbenchmark::microbenchmark(f3(2))
Unit: nanoseconds
expr min lq mean median uq max neval
f3(2) 844 868.5 53053.53 1000 1096 5180886 100
虽然我不确定这个例子是否非常可靠......因为它非常快
推荐阅读
- arrays - 我的 Fortran 动态分配代码有什么问题?
- flutter - 如何仅在抽屉上应用 BackdropFilter 模糊?
- c - 我不知道 Windows 中 c 的 lib 文件在哪里
- java - 你将如何处理未来可能不同的两个相同的值对象?
- sql-server - 使用带有参数化查询的 pyodbc 将数据库读入数据框
- python - pytest期间的isinstance断言给出完整级别的Class而不是本地导入的Class?
- docker - 防止 Docker 拉取远程仓库
- javascript - 如何在ExpressJS中的一段时间后从字典中删除对象
- go - 如何在结构中嵌入接口而不使接口名称成为 JSON 中的键?
- django - 使用 nginx / gunicorn / Django 设置,记录错误请求的内容是什么?