[R] how to specify dev.print target by a variable?

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Dec 23 08:51:44 CET 2005


On Fri, 23 Dec 2005, Berwin A Turlach wrote:

> G'day Leif,
>
>>>>>> "LK" == Leif Kirschenbaum <leif at reflectivity.com> writes:
>
>    LK> How do I do this such that I can specify FOO to be one of
>    LK> several choices? (GDD, PNG, postscript, etc.)  If I make FOO a
>    LK> character variable, then "dev.print" complains.
> Mmh, I am not sure what the complaint of R 2.2.0 on MS Windows is, but
> I guess it is the same as under linux:
>
>> DEVw=500
>> DEVh=350
>> fname="my_plot"
>> plot(rnorm(300))
>> FOO <- "png"
>> dev.print(file=fname, device=FOO, width=DEVw, height=DEVh, bg="transparent")
> Error in dev.copy(device = "png", file = fname, width = DEVw, height = DEVh,  :
> 	'device' should be a function
>
> Which is very informative.  `device' is supposed to be a function, not
> a character variable, thus:
>
>> FOO <- png
>> dev.print(file=fname, device=FOO, width=DEVw, height=DEVh, bg="transparent")
> X11
>  2
>> FOO <- pdf
>> dev.print(file=fname, device=FOO, width=DEVw, height=DEVh, bg="transparent")
> X11
>  2
>
> all seem to work.

And my guess is that Leif wants to be able to do

mydevice <- "png"
dev.print(device = get(mydevice), ...)
                    ^^^

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list