7

如何R在 中开始新会话knitr?我宁愿开始一个新会话,也不愿使用类似的东西,rm(list=ls())因为它不等效。

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

2 回答 2

4

好的,现在我有一些更重要的东西给你,灵感来自Georg Ruß 的 R-help 列表上的答案。他建议了三件事让 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 置于您启动它时的状态。我可能忽略了一些东西。

于 2012-04-06T08:03:13.330 回答
4

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

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

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

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

于 2012-04-06T16:41:38.480 回答