[R] RGui: windows-record and command history
Paul Murrell
p.murrell at auckland.ac.nz
Fri Mar 24 02:17:48 CET 2006
Hi
Peter Ehlers wrote:
>
>
> Paul Murrell wrote:
>
>> 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
>
>
> Paul,
> If I read your comments correctly, the problem with manipulating the
> graph history is with saved histories across sessions/versions. Is
> there any reason not to manipulate it *within* a session? I never
> save plots for re-use in R. Re-running code is usually best for me.
> But I would find it handy to fiddle with the display list in a
> session.
That is *one* problem with the display list. Messing directly with the
display list *within a session* is *less* dangerous, but R's behaviour
if you do that is "undefined".
The display list is technically an internal structure for R's internal
use. We can't stop you playing with it, but I do not encourage it and
it is not officially supported.
There are a number of simple things that you could do to the display
list that should work, but providing proper support for general
manipulations of the display list would require a significant amount of
(re)design of the R graphics code.
Paul
p.s. These comments apply to the display list in R's "graphics engine".
The 'grid' package also maintains a display list, and that has been
designed to support more general manipulations.
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-help
mailing list