【发布时间】:2013-03-07 12:35:31
【问题描述】:
我想评估一些代码在不同版本的 R 中的性能。原则上这很容易:
- 开始R
- 使用
system.time()测量运行一段代码所需的时间 - 终止R
- 冲洗并在不同版本中重复
现在,我想使用knitr 创建一个报告来执行此操作。所以,在我看来,我需要一种机制来在每个块中启动一个新会话。
我该怎么做?
一些示例knitr markdown 代码用作演示。这段代码使用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)
})
```
【问题讨论】:
-
难道你不能只有一个
bash脚本或诸如此类的东西来完成 R 会话的所有启动/停止,让每个会话将其结果写入文件,然后使用knitr读取所有的日志文件并总结结果?没有那么优雅,但可能更准确、更容易。 -
@AriB.Friedman 是的,可能。但这听起来像是工作!
-
估计你需要使用
system()来运行另一个R进程... -
给我几分钟,我会在
knitr中添加一个Rscriptengine。