7

我正在使用 R 软件进行统计分析,很遗憾它没有保留和恢复我的提示命令历史记录。实际上,每次在新启动的交互式 R 会话上按向上箭头都会显示空白历史记录。如果它能够以类似于ipython. 我试着把它放在我的.Rprofile文件中无济于事。从未创建包含我的命令历史记录的文件。

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

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

当然这条线出现在我的.bash_profile

export R_HISTFILE="$HOME/share/r_libs/.history"

所有这些都是通过 SSH 在运行 Linux 的远程服务器上发生的。非常感谢任何帮助!

4

4 回答 4

12

在我的~/.profile我有:

export R_HISTFILE=~/.Rhistory

在我的~/.Rprofile我有:

if (interactive()) {
  .Last <- function() try(savehistory("~/.Rhistory"))
}

这对我有用(尽管如果您打开了多个 R 会话,它就不能很好地工作)

于 2013-05-24T15:22:37.520 回答
1

设置的替代方法.Last是为 注册终结器.GlobalEnv,即使 R 会话以 EOF 退出(Windows 上的Ctrl+和其他地方的+ )也会运行:ZCtrlD

if (interactive()) {
  invisible(
    reg.finalizer(
      .GlobalEnv,
      eval(bquote(function(e) try(savehistory(file.path(.(getwd()), ".Rhistory"))))),
      onexit = TRUE))
}

这里有一些额外的花里胡哨:

  • invisible()reg.finalizer()确保R 启动时不打印返回值
  • 与 Hadley 的回答相反,该.Rhistory文件保存在当前目录中。eval(bquote(... .(getwd()) ...))在启动期间进行评估getwd(),以便在退出时使用启动期间的当前目录
  • 设置onexit = TRUE确保代码实际运行
于 2016-10-14T19:18:54.933 回答
0

您可能会考虑使用 emacs 和 ESS,它们在 SSH 上运行良好,并允许使用更常用(通常被认为更强大)的方法将有用的命令保存在单独的文件中。

于 2013-05-28T18:47:16.107 回答
0

如果您使用 Rgui : savehistory()loadhistory()并且history()可以完成这项工作。否则我想这取决于IDE ..

于 2013-05-24T14:18:45.763 回答