On Jul 14, 2013, at 3:42 AM, Simon Zehnder wrote:

> Haha, good point!
> 
> So, the correct code is:
> 
> any(names(formals(getOption("device"))) == "title") {
>       dev.new(title = "title")
> }
> 

This might be easier to read:

"title" %in% names(formals(getOption("device")) )

-- 

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

David Winsemius
Alameda, CA, USA

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

Reply via email to