在knitr中开始一个新的R会话

时间:2012-04-06 04:37:33

标签: r knitr

如何在R开始新的knitr会话?我宁愿开始一个新的会话,而不是像rm(list=ls())那样使用它,因为它不等同。

<<myname>>=
#some R code
@
<<another_chunk>>=
#start a new R session
#more R code
@

2 个答案:

答案 0 :(得分:4)

好的,现在我有一些更实质的东西,受到an answer on the R-help list by Georg Ruß的启发。他建议让R回到启动时的三个方面,我已经为你写了这个六步手册。

首先,保存一个在启动时运行的软件包的字符串(在运行任何其他代码之前,应该先执行其他操作),

foo <- .packages()

其次,当您想要重置R时,如您所述,您运行

rm(list=ls()) 

删除所有对象。然后,第三,你跑,

bar <- .packages()

获取当前包的字符串。接下来,

foobar <- setdiff(bar, foo)

第五,你通过这种解决方法循环消除差异,

toRemove <- paste("package:", foobar, sep='') 
#or paste0("package:", foobar) in R-2.15.0 or higher
for(i in seq_along(foobar)) {           
    detach(toRemove[i], character.only=TRUE)    
}

第六,根据您的设置,您可以获得.Rprofile

source(".Rprofile")

这应该将R置于启动时的状态。我本可以忽视一些事情。

答案 1 :(得分:4)

我不建议在knitr中启动新的R会话,而是建议您在终端(或命令窗口)中启动一个新的R会话,如下所示:

R -e "library(knitr); knit('your_input.Rnw')"

如果你在Windows下,你必须将R的bin目录放入你的环境变量PATH(我已经厌倦了描述如何做到这一点,所以如果你在Windows世界,或查看LyX Sweave manual)。

但是,大多数编辑在调用Sweave或knitr时会启动新的R会话,例如LyX和RStudio等您可以在http://yihui.name/knitr/demo/editors/中找到更多可能的编辑器。我真的不需要在终端中调用R -e ...