[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.

MHP

-- 

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




More information about the R-help mailing list