对于我计划在位置上使用的函数,我有一个无界的参数命名列表,例如
list(
method1 = "method1",
method2 = "method2",
...,
methodn = "methodn"
)使用
function(method) {
if (identical(method, "method1")) {Sys.sleep(1); return(NULL)}
if (identical(method, "method2")) {Sys.sleep(2); return(NULL)}
Sys.sleep(nchar(method))
return(NULL)
}如何使用package:microbenchmark使用提供的参数对给定函数进行基准测试?如果基准测试本身被命名为位置参数,则在我的源列表中命名为加分。
我所见过的包:微基准测试用法的要点是,要进行基准测试的任务以点为单位进行指定。参数list可用于计算未计算的表达式;这似乎是编程使用的正确途径。但是,因为expression()将括号的内部视为文字,所以我还没有找到一种在expression()中注入参数的方法。我用parse()走上了一条黑暗的道路,并让它工作了--但似乎还有更好的方法。
发布于 2017-12-20 20:06:48
一种解决方案是将cat和sprintf与for循环一起使用,尽管如果您有许多参数组合,这可能会出现问题。
cat("res <- microbenchmark(\n")
for (i in 1:4){
for (j in 1:4) {
cat(sprintf("f_%i_%i = f(%i, %i),\n", i, j, i, j))
}
}
cat(")\n")然后复制-粘贴并运行代码(删除倒数第二行中的逗号)。
https://stackoverflow.com/questions/43018161
复制相似问题