我记录了一些将被其他学生阅读的代码,knitr似乎是一个很好的方法。困扰我的一点是,对于需要很长时间才能运行的脚本,我的方法效率不高。
假设我有类似
的内容<!--begin.rcode example1, fig.width=8, fig.height=10
input <- data[,c("K12","K23","delta")]
output <- data[,"Class"]
startTime <- proc.time()
result <- C5.0(input, output)
totalTime <- proc.time()-startTime
cat("Execution time: ", totalTime[3], "\n")
plot(result)
result
end.rcode-->
这将根据称为数据的数据框创建,绘制和打印决策树。 我希望在单个.Rhtml文档中有几个这样的块,并且在每个块中我都会更改数据集或算法的参数。
如果数据集很大,则调用C5.0将需要一些时间。如果我在同一个.Rhtml文件中添加一些其他示例,我必须重新运行它以创建.html文件和数字。我一直这样做,因为我想评论执行的结果,为了创建.html文件,我需要再次编织.Rhtml文件,这意味着重新运行代码。
我正在寻找的方法是告诉knitr它可以重复使用先前执行块的结果(不要看到这样做的方法,此外,看起来有风险和手动)或打破。 Rhtml的碎片可以单独编织,但在我需要的时候仍然可以制作一个完整的.html - 甚至更好,类似于&#34; make&#34;对于knitr,它只会重新运行已更改的.Rhtmls并创建一个.html文件。顺便说一句,如果有人知道如何从命令行编写一个.Rhtml文件也可能有用 - 我使用RStudio是为了方便,但单个命令行命令也会有所帮助。
我知道这似乎是主观的,但我并不是在寻找一个更好的(主观地,#34;我的方法比你的方法更好&#34;)做任务的方式 - 任何方法都可以运行而无需重新运行整个.Rhtml页面都可以。
感谢
答案 0 :(得分:4)
将长时间运行的代码与knitr相结合的一种非常简单的方法是使用cache选项。要使用缓存,只需添加cache=TRUE
即可。
我个人的经验是,你经常需要删除缓存所做的目录并进行干净的构建。