我想评估一些代码在不同版本的R中的性能。原则上这很容易:
system.time()
来衡量运行一段代码所需的时间现在,我想使用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)
})
```
答案 0 :(得分:6)
在Rscript
was easy中添加knitr
引擎,但我被an R bug阻止了。无论如何,这个引擎自version 1.1.5起可用,并将在CRAN上作为版本1.2。
现在您可以指定块选项engine='Rscript'
和engine.path='path/to/the/desired/Rscript'
。
对于大规模的性能比较,我认为Ari B. Friedman在上述评论中提出的建议是一种更好的方法。如果您有许多用于比较的代码块,则输入引擎路径将非常繁琐。