Or something along the lines of: Suggests: RGtk2
f <- function (x, ...) { stopifnot("package:RGtk2" %in% search() || require("RGtk2", quietly = TRUE)) # do Rgtk2 stuff here } Jeff On Thu, Oct 30, 2008 at 9:15 AM, Martin Maechler <[EMAIL PROTECTED]> wrote: >>>>>> "FA" == Felix Andrews <[EMAIL PROTECTED]> >>>>>> on Thu, 30 Oct 2008 17:40:17 +1100 writes: > > FA> Dear R-devel, > FA> I have a problem defining the dependencies for a package. > > FA> My package (latticist, not yet released) "Suggests" RGtk2, but > FA> specifically does not require it. If RGtk2 is available, the user can > FA> call a function that builds a GUI with RGtk2. However, I do not want > FA> to attach the RGtk2 namespace, because it is irrelevant to the user > FA> and exports about 7500 symbols. > > FA> Last time I asked a similar question to this, Professor Ripley noted > FA> that the usual method to get around this situation is the use an > FA> explicit package prefix to function calls (the `::` operator). But > FA> this is not so easy with non-standard functions. Take this chunk of > FA> code: > > FA> widg <- gtkComboBoxEntryNewText() > FA> widg$show() > FA> widg["width-request"] <- 100 > > FA> The first call is easy to prefix, as RGtk2::gtkComboBoxEntryNewText() > FA> but the others, `$.RGtkObject` and `[<-.RGtkObject` are not. > > indeed. > > FA> While I *could* rewrite all the code to use explicit functions, I > FA> think, the resulting code would be much less clear. > > FA> Essentially what I want to do is conditionally import the RGtk2 > namespace. > FA> Any suggestions? > > Maybe something along the line of > > if(is.function(try(RGtk2::gtkComboBoxEntryNewText))) { > library(RGtk2) > .... > .... > } > > ?? > > Regards, > Martin > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Jeffrey Ryan [EMAIL PROTECTED] ia: insight algorithmics www.insightalgo.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel