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/

10-11 02:33
查看更多