Windows XP R版本2.12
我正在尝试编写一个带有一个参数的函数(例如“ g”),一个函数(例如“ f”)并返回匹配的函数。此外,在'g'主体中包含一条语句,该语句告诉生成的对象在调用该对象时返回system.time的值。一个例子将阐明。
我想要的是:
g <- function(f) {...}
z <- g(mean)
z(c(1, 4, 7))
带输出
user system elapsed
0.04 0.00 0.04
我有的:
g <- function(f) {if (!exists("x")) {x <- match.fun(f)} else {system.time(x)}}
z <- g(mean)
z(c(1, 4, 7))
带输出
[1] 4
任何帮助是极大的赞赏。
最佳答案
也许这会有所帮助:
g <- function(f){
function(x){
zz <- system.time(
xx <- match.fun(f)(x)
)
list(value=xx, system.time=zz)
}
}
正在使用:
g(mean)(c(1, 4, 7))
$value
[1] 4
$system.time
user system elapsed
0 0 0
您可能需要考虑如何返回值。我使用了一个列表,但是另一个选择是将系统时间打印为副作用并返回计算出的值。
关于r - 从评估函数返回system.time,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7998942/