8

我想评估一些代码在不同版本的 R 中的性能。原则上这很容易:

  • 启动 R
  • 用于system.time()衡量运行一段代码所需的时间
  • 终止 R
  • 冲洗并以不同的版本重复

现在,我想用knitr创建一个报告来做到这一点。所以,在我看来,我需要一种机制来在每个块中启动一个新会话。

我该怎么做呢?


一些示例knitr 降价代码用作演示。此代码使用 绘制图形ggplot,但显然两个版本都返回相同的时间,因为我不知道如何为每个块启动新版本的 R。

Comparison of R performance
========================================================

# Do analysis in R version 2.14

```{r fig.width=6, fig.height=3}
library(ggplot2)
data(diamonds)

system.time({
  p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point()
  print(p)
})
```


# Repeat same analysis in R 2.15

```{r fig.width=6, fig.height=3}
library(ggplot2)
data(diamonds)

system.time({
  p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point()
  print(p)
})
```
4

1 回答 1

6

添加Rscript引擎knitr 很容易,但我被一个 R 错误阻止了。不管怎样,这个引擎从1.1.5 版开始可用,并将作为 1.2 版在 CRAN 上使用。

现在您可以指定块选项engine='Rscript'engine.path='path/to/the/desired/Rscript'.

对于大规模的性能比较,我认为 Ari B. Friedman 在上面的评论中建议是一个更好的方法。如果您有许多代码块进行比较,那么键入引擎路径将非常乏味。

于 2013-03-10T03:51:49.197 回答