[Rd] appropriate work-around for problems with a specific plot device (Rstudio)?
Yihui Xie
xie at yihui.name
Fri Oct 25 18:23:36 CEST 2013
You can see how R sets up the device option in grDevices:::.onLoad,
but unfortunately the code there is not easily usable.
I think you can treat the NOTE in R CMD check as a false warning and
explain the situation to CRAN maintainers in the email. Code analysis
using codetools in R CMD check is not always reliable. I'm not sure if
grDevices::quartz, grDevices::x11, and grDevices::windows can "fix"
the NOTE.
Regards,
Yihui
--
Yihui Xie <xieyihui at gmail.com>
Web: http://yihui.name
Department of Statistics, Iowa State University
2215 Snedecor Hall, Ames, IA
On Fri, Oct 25, 2013 at 9:24 AM, Lorenz, David <lorenz at usgs.gov> wrote:
> Skye,
> I ran into a similar problem with RStudio. My solution was just to check
> if "windows" exists and if it does, open windows, then check "quartz" and
> so forth. You can restrict the exists function to look only in grDevices.
> Dave
>
>
> On Fri, Oct 25, 2013 at 4:19 AM, Milan Bouchet-Valat <nalimilan at club.fr>wrote:
>
>> Le jeudi 24 octobre 2013 à 17:13 -0700, Skye Bender-deMoll a écrit :
>> > Dear r-devel-opers,
>> >
>> > I'm working on a package that does some plot-intensive work using the
>> > animation library. It turns out that this performs very badly in the
>> > RStudio plot device, which is the preferred IDE for our team. Our
>> > kludgy solution is to detect if the Rstudio device is running, and if
>> > so, open another plot device to do the rendering and close it when done:
>> >
>> > externalDevice<-FALSE
>> > if (!is.function(options()$device)){
>> > if (names(dev.cur())=="RStudioGD"){
>> > message("RStudio's graphics device is not well supported by ndtv,
>> > attempting to open another type of plot window")
>> > # try to open a new platform-appropriate plot window
>> > if (.Platform$OS.type=='windows'){
>> > windows()
>> > } else if(length(grep(R.version$platform,pattern='apple'))>0) #
>> > is it mac?
>> > {
>> > quartz()
>> > } else { # must be unix
>> > x11()
>> > }
>> > externalDevice<-TRUE
>> > }
>> > }
>> >
>> > [render a whole bunch of plot frames]
>> >
>> > # turn off external device if using one
>> > if (externalDevice){
>> > dev.off()
>> > }
>> >
>> > Although this works well for us in practice, when testing against R
>> > devel, we get the following NOTE:
>> >
>> >
>> > * checking R code for possible problems ... NOTE
>> > Found an obsolete/platform-specific call in the following function:
>> > ‘render.animation’
>> > Found the platform-specific devices:
>> > ‘quartz’ ‘windows’ ‘x11’
>> > dev.new() is the preferred way to open a new device, in the unlikely
>> > event one is needed.
>> >
>> >
>> > Is there a better way to resolve this situation? We can't use dev.new()
>> > to open the plot device, because RStudio has set the value of
>> > getOption("device") to "RStudioGD". Can anyone recommend an alternative
>> > method of generating a platform-appropriate device to open that won't
>> > generate R CMD check issues?
>> How about temporarily changing the value of the "device" option to what
>> you need?
>>
>> I think you should also get in touch with RStudio developers to see
>> whether something can be done about the poor performance.
>>
>>
>> My two cents
More information about the R-devel
mailing list