将函数列表传递给要评估的“microbenchmark”
Pass list of functions to `microbenchmark` to be evaluated
我有一个名为 dir
.
的文件目录
我想 运行 在 dir
中的每个文件上调用一个名为 f(file, arg1, arg2)
的函数。
我想在 microbenchmark
.
中对这些函数中的每一个进行基准测试
如何创建一个名为 funcs
的函数列表以进行评估,如下所示:
$a
f("file1", arg1, arg2)
$b
f("file2", arg1, arg2)
$c
f("file3", arg1, arg2)
这样我就可以直接调用 microbenchmark::microbenchmark(funcs)
?
您需要创建一个未计算表达式的列表。一种方法是将 lapply
参数传递给 bquote
来构建这些表达式。然后确保将该列表绑定到 microbenchmark()
的 list=
参数。例如
tests <- lapply(paste0("file", 1:3), function(x) {
bquote(f(.(x), arg1, arg2))
})
microbenchmark(list=tests)
这是一个可重现的例子
tests <- lapply(c(1,10,100), function(x) {
bquote(rnorm(.(x)))
})
microbenchmark::microbenchmark(list=tests)
# Unit: microseconds
# expr min lq mean median uq max neval cld
# rnorm(1) 1.4 1.5 1.783 1.6 1.7 15.5 100 a
# rnorm(10) 1.9 2.1 2.253 2.2 2.3 4.0 100 b
# rnorm(100) 7.8 8.1 8.741 8.5 9.0 12.7 100 c
我有一个名为 dir
.
我想 运行 在 dir
中的每个文件上调用一个名为 f(file, arg1, arg2)
的函数。
我想在 microbenchmark
.
如何创建一个名为 funcs
的函数列表以进行评估,如下所示:
$a
f("file1", arg1, arg2)
$b
f("file2", arg1, arg2)
$c
f("file3", arg1, arg2)
这样我就可以直接调用 microbenchmark::microbenchmark(funcs)
?
您需要创建一个未计算表达式的列表。一种方法是将 lapply
参数传递给 bquote
来构建这些表达式。然后确保将该列表绑定到 microbenchmark()
的 list=
参数。例如
tests <- lapply(paste0("file", 1:3), function(x) {
bquote(f(.(x), arg1, arg2))
})
microbenchmark(list=tests)
这是一个可重现的例子
tests <- lapply(c(1,10,100), function(x) {
bquote(rnorm(.(x)))
})
microbenchmark::microbenchmark(list=tests)
# Unit: microseconds
# expr min lq mean median uq max neval cld
# rnorm(1) 1.4 1.5 1.783 1.6 1.7 15.5 100 a
# rnorm(10) 1.9 2.1 2.253 2.2 2.3 4.0 100 b
# rnorm(100) 7.8 8.1 8.741 8.5 9.0 12.7 100 c