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

Xu *_*ang 7 r knitr

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

<<myname>>=
#some R code
@
<<another_chunk>>=
#start a new R session
#more R code
@
Run Code Online (Sandbox Code Playgroud)

Eri*_*ail 4

好吧,现在我有一些更实质性的东西给你,灵感来自于Georg Ru\xc3\x9f 在 R-help 列表上的答案。他提出了三件事来让 R 恢复到启动时的状态,我已经为您编写了这本六步手册。

\n\n

首先,保存启动时运行的软件包的字符串(这应该在运行任何其他代码之前在其他任何事情之前完成),

\n\n
foo <- .packages()\n
Run Code Online (Sandbox Code Playgroud)\n\n

其次,当你想重置 R 时,正如你也提到的,你运行

\n\n
rm(list=ls()) \n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
bar <- .packages()\n
Run Code Online (Sandbox Code Playgroud)\n\n

获取当前包的字符串。其次是,

\n\n
foobar <- setdiff(bar, foo)\n
Run Code Online (Sandbox Code Playgroud)\n\n

第五,通过这个解决循环消除差异,

\n\n
toRemove <- paste("package:", foobar, sep=\'\') \n#or paste0("package:", foobar) in R-2.15.0 or higher\nfor(i in seq_along(foobar)) {           \n    detach(toRemove[i], character.only=TRUE)    \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
source(".Rprofile")\n
Run Code Online (Sandbox Code Playgroud)\n\n

这应该使 R 进入您启动它时的状态。我可能忽略了一些事情。

\n