在会话中自动在R中保存历史记录

时间:2013-02-07 17:56:55

标签: r

我的环境变量$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会话中自动保存命令历史记录?

1 个答案:

答案 0 :(得分: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"))放入{。{1}}的.Rprofile中。