Haha, good point! So, the correct code is:
any(names(formals(getOption("device"))) == "title") { dev.new(title = "title") } Thanks for correcting my approach Rolf! Best Simon On Jul 14, 2013, at 1:02 AM, Rolf Turner <rolf.tur...@xtra.co.nz> wrote: > > > I think you ought to take a look at > > fortune("Lewis Carroll") > > cheers, > > Rolf Turner > > On 14/07/13 01:45, Simon Zehnder wrote: >> Hi Duncan, >> >> thank you very much for your advice! That makes it all work. >> >> I check in addition for a "title" argument in the device via >> >> if (any(names(getOption("device")) == TRUE)) { >> dev.new(title = "title") >> } >> >> Thanks again! >> >> Simon >> >> On Jul 13, 2013, at 2:40 PM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote: >> >>> On 13-07-13 1:33 PM, Simon Zehnder wrote: >>>> Dear R-Users, >>>> >>>> I am writing a package using S4 classes. In the generic method "plot" I >>>> want to set the title for the plotting window as I will have several >>>> windows and window titles help the users to distinguish the graphics >>>> without putting a title into the plot itself (this can be done by users >>>> whenever they want) >>>> >>>> So I created a helper function .setDeviceTitle which I called after the >>>> plot has been done: >>>> >>>> ".setDeviceTitle" <- function(title = "title", dev = dev.cur()) { >>>> dev <- names(dev)[1] >>>> >>>> ## check for OS ## >>>> if (dev == "windows") { >>>> windows(title = title) >>>> } else if (dev == "X11") { >>>> X11(title = title) >>>> } else { >>>> quartz(title = title) >>>> } >>>> } >>>> >>>> The result is a new device with the title in addition to the old. Is it >>>> possible to give a window a title after the plot has been done? If not: >>>> Before I plot the device I cannot know what device it will be, so I >>>> thought about a check via capabilities(): >>>> >>>> if (any(names(capabilities()) == "X11")) { >>>> X11(title = title) >>>> } >>>> else if (any(names(capabilities)) == "windows") { >>>> windows(title = title) >>>> } else { >>>> quartz(title = title) >>>> } >>>> >>>> I want to have a safe method, which works on each OS R can run. How would >>>> you solve the problem? >>> Use dev.new() rather than picking a particular device. If all the possible >>> devices support the "title" argument, then >>> >>> dev.new(title=title) >>> >>> will be fine. If you might need more customization (or want to protect >>> against a user who chooses a device that doesn't have "title" as an >>> argument), use getOption("device") to examine the call that will be used. >>> >>> Duncan Murdoch >>> ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.