[R] RGui: windows-record and command history

Michael H. Prager Mike.Prager at noaa.gov
Thu Mar 23 21:41:35 CET 2006

on 3/23/2006 2:42 PM Paul Murrell said the following:
> Hi
> Duncan Murdoch wrote:
>> On 3/23/2006 10:46 AM, Gabor Grothendieck wrote:
>>> On 3/23/06, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
>>>> On 3/23/2006 10:29 AM, Gabor Grothendieck wrote:
>>>>> On 3/23/06, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
>>>>>> On 3/23/2006 7:35 AM, Thomas Steiner wrote:
>>>>>>> a) How can I set the recording of all windows()-history forever to
>>>>>>> "true"? I want something like windows(record = TRUE) but not just for
>>>>>>> the window that opens then, but for all windows I will open ever.
>>>>>> options(graphics.record=TRUE)
>>>>>> will make that happen for the rest of the session.  To really make it
>>>>>> happen forever, you need to put this line in your Rprofile (see
>>>>>> ?Rprofile for where that comes from).
>>>>>> Watch out though:  the graphics history is stored in your current
>>>>>> workspace in memory, and it can get big.  You might find you're running
>>>>>> out of memory if you store everything, and you'll find your .RData files
>>>>>> quite large if you save your workspace.
>>>>>> On my todo list (but not for 2.3.0) is the possibility of setting a
>>>>>> default history length, perhaps defaulting to saving the last 2 or 3
>>>>>> pages.
>>>>> Would it be feasible to have history on disk or perhaps the last
>>>>> m in memory and the last n (possibly Inf) on disk?
>>>> The history is just another R object.  Saving big R objects on disk
>>>> might be desirable, but it would be a big change, so I'd call it
>>>> infeasible.  I wouldn't want to get into special-casing this particular
>>>> R object:  that way lies madness.
>>>> However, since it is just an R object, it's available for R code to work
>>>> with, so someone who was interested in doing this could write a
>>>> contributed package that did it.
>>> Are there R-level facilities to manipulate the history, not
>>> just the top?
>> Sure, it's a regular R object. You will need to read the source to know 
>> how to interpret it, and since it's undocumented there's a risk of 
>> changes in future R versions, but it's not very complicated.  See my 
>> message to Peter.
> Be careful with this.  The objects that are recorded on the display list 
> are calls to graphics functions PLUS state information in a raw binary 
> format.  The display list was originally intended for reuse within the 
> same R session (for redrawing the screen).  If you try to save it and 
> use it between sessions or (worse) between versions of R you could run 
> into some nasty problems.  For example, what if the graphics function 
> interface has changed?  what if the raw binary state information format 
> has changed?  what if the required packages are not installed?   At 
> best, your saved object produces errors;  at worst it becomes completely 
> useless and is unrecoverable.
> Paul

For that reason, there could be some benefit in saving desired graphics 
externally as files -- under Windows, savePlot() can be used -- and 
starting with a fresh graphics history in each R session.

I regularly use the R command

 .SavedPlots <- NULL

in scripts to get rid of any old history.  This seems to work fine, but 
of course I would appreciate comments from those more knowledgeable 
telling me what's wrong with it.



Michael Prager, Ph.D.
Population Dynamics Team, NMFS SE Fisheries Science Center
NOAA Center for Coastal Fisheries and Habitat Research
Beaufort, North Carolina  28516
Opinions expressed are personal, not official.  No
government endorsement of any product is made or implied.

More information about the R-help mailing list