2

$R_HISTFILE我的主目录中有一个指向环境变量/home/my.username/.RHistory和以下代码.Rprofile

.Last <- function() {
        if (!any(commandArgs()=='--no-readline') && interactive()){
                require(utils)
                try(savehistory(Sys.getenv("R_HISTFILE")))
        }
}

仍然每当我打开 R 时,我history()都看不到我在之前的会话中输入的命令。此外,这些文件.RHistory几乎是空的,只有三行(根本不反映我过去输入的命令)。

如何跨 R 会话自动保存命令历史记录?

4

1 回答 1

3

你是怎么设置环境变量的?你应该可以把它放在你的.Renviron文件中。

为确保环境变量设置正确,请确认这为您提供了“/home/my.username/.RHistory”

$ R --slave -e 'Sys.getenv("R_HISTFILE")'

否则,你是开始R还是--vanilla类似?当您启动 R 时,您是否在您的主目录中?

这个对我有用:

gMac:~ garrett$ R_HISTFILE=~/.RHistory R --vanilla -q
> .Last <- function() {
+         if (!any(commandArgs()=='--no-readline') && interactive()){
+                 require(utils)
+                 try(savehistory(Sys.getenv("R_HISTFILE")))
+         }
+ }
> a <- 5
> b <- 10
> q()

gMac:~ garrett$ R_HISTFILE=~/.RHistory R -q
> history()

这给了我一个包含以下内容的文件:

.Last <- function() {
        if (!any(commandArgs()=='--no-readline') && interactive()){
               require(utils)
               try(savehistory(Sys.getenv("R_HISTFILE")))
        }
}
a <- 5
b <- 10
q()
history()

如果一切都失败了,您可以放入loadhistory(Sys.getenv("R_HISTFILE")).First的 .Rprofile。

于 2013-02-07T23:41:44.630 回答