gpt4 book ai didi

r - 基准分析和显示分析AND基准的结果?

转载 作者:行者123 更新时间:2023-12-02 06:19:26 27 4
gpt4 key购买 nike

可能,我只是错过了一个参数......但是,也许有人可以指出我:How can run analysis in R benchmark it and still store the result back somewhere?。我知道 R 函数只能返回一个对象,但我可以在此处使用列表或粘贴基准测试结果并将分析存储在函数的返回值中。

但是,有没有什么方法可以评估基准(或 system.time)和分析而不用像这样运行两次?:

require(rbenchmark)
bmark <- function(x){
res <- list()
res[[1]] <- benchmark(x^6)
res[[2]] <- x^6
res
}

编辑:很抱歉,我对我真正想做的事情造成了一些困惑。也许用例更清楚:我没有典型的基准情况,我想检查我的自定义函数是否比其他函数更快。而是我在不同的机器上用不同的数据运行同样的东西。我在测试环境中不需要这个,但在生产环境中——我只想让脚本的用户知道它花了多长时间。如果那是一个小时或更长时间,人们可以计划他们的午休时间:)。

最佳答案

这是一个使用两个函数的示例。第一个使用 plyr,第二个使用 data.table

# dummy data
require(plyr)
require(data.table)
set.seed(45)
x1 <- data.frame(x=rnorm(1e6), grp = sample(letters[1:26], 1e6, replace=T))
x1.dt <- data.table(x1, key="grp")
# function that uses plyr
DF.FUN <- function(x) {
ddply(x1, .(grp), summarise, m.x = mean(x))
}

# function that uses data.table
DT.FUN <- function(x) {
x1.dt[, list(m.x=mean(x)),by=grp]
}

require(rbenchmark)
> benchmark( s1 <- DF.FUN(), s2 <- DT.FUN(), order="elapsed", replications=2)

# test replications elapsed relative user.self sys.self user.child sys.child
# 2 s2 <- DT.FUN() 2 0.036 1.000 0.031 0.006 0 0
# 1 s1 <- DF.FUN() 2 0.527 14.639 0.363 0.163 0 0

现在,s1s2 包含每个函数的结果,基准测试结果将显示在屏幕上。

# > head(s1)
# grp m.x
# 1 a 0.0069312201
# 2 b -0.0002422315
# 3 c -0.0129449586
# 4 d -0.0036275338
# 5 e 0.0013438022
# 6 f -0.0015428427

# > head(s2)
# grp m.x
# 1: a 0.0069312201
# 2: b -0.0002422315
# 3: c -0.0129449586
# 4: d -0.0036275338
# 5: e 0.0013438022
# 6: f -0.0015428427

这就是你想要的吗?

关于r - 基准分析和显示分析AND基准的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939258/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com