开发者

How can I increase the length of the command history in R?

In R, I like to use reverse search (ctrl+r) to redo infrequent but complex commands without a script. Frequently, I will do so many other commands in between that the command history discards 开发者_C百科the old command. How can I change the default length of the command history?


This is platform and console specific. From the help for ?savehistory:

There are several history mechanisms available for the different R consoles, which work in similar but not identical ways...

...

The history mechanism is controlled by two environment variables: R_HISTSIZE controls the number of lines that are saved (default 512), and R_HISTFILE sets the filename used for the loading/saving of history if requested at the beginning/end of a session (but not the default for these functions). There is no limit on the number of lines of history retained during a session, so setting R_HISTSIZE to a large value has no penalty unless a large file is actually generated.

So, in theory, you can read and set R_HISTSIZE with:

Sys.getenv("R_HISTSIZE")
Sys.setenv(R_HISTSIZE = new_number)

But, in practise, this may or may not have any effect.

See also ?Sys.setenv and ?EnvVar


Take a look at the help page for history(). This is apparently set by the environment variable R_HISTSIZE so you can set it for the session with Sys.setenv(R_HISTSIZE = XXX). I'm still digging to find where you change this default behavior for all R sessions, but presumably it will be related to .Startup or your R profile.


?history

"There are several history mechanisms available for the different R consoles, which work in similar but not identical ways. "

Furthermore there may even be two history mechanism in the same device. I have .history files saved from the console and the Mac R GUI has its own separate system. You can increase the number of GUI managed history entries in the Preferences panel.

There is an incremental history package: http://finzi.psych.upenn.edu/R/library/track/html/track.history.html


In ESS you can set comint-input-ring-size:

(add-hook 'inferior-ess-mode-hook
          '(lambda()
             (setq comint-input-ring-size 9999999)))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜