[Rd] Debugging namespace problems
Martin Morgan
mtmorgan at fhcrc.org
Fri Dec 23 23:11:43 CET 2011
On 12/23/2011 11:54 AM, Hadley Wickham wrote:
> And one last note: I'm reasonably certain I haven't forgotten to
> export an S3 method because I wrote the following script to (crudely)
> compare the function definitions in ggplot2 with its namespace:
>
> ns<- parseNamespaceFile("ggplot", "~/Documents/ggplot/")
>
> s3e<- paste(ns$S3methods[, 1], ns$S3methods[, 2], sep = ".")
>
> f<- ls("package:ggplot2")
> s3<- f[str_detect(f, fixed("."))]
>
> missing<- setdiff(s3, s3e)
> missing[!str_detect(missing, "bolus|icon")]
>
> (Code isn't reproducible, but should give you the basic idea)
I think it's this line
if (!exists(scale_name, globalenv()))
next
in scales_add_defaults, where the symbol isn't found in the globalenv()
when nstest is attached and ggplot2 only loaded, but is (via the search
path) when ggplot2 is attached.
Martin
>
> Hadley
>
>
> On Fri, Dec 23, 2011 at 1:52 PM, Hadley Wickham<hadley at rice.edu> wrote:
>> I should add that I'm pretty sure this is something wrong with the
>> ggplot2 NAMESPACE because if I explicitly attach ggplot2 the code
>> works:
>>
>>> library(nstest)
>>> my_plot()
>> Error in UseMethod("scale_dimension") :
>> no applicable method for 'scale_dimension' applied to an object of
>> class "NULL"
>>> library(ggplot2)
>>> my_plot()
>> # Plot appears.
>>
>> Hadley
>>
>> On Fri, Dec 23, 2011 at 1:50 PM, Hadley Wickham<hadley at rice.edu> wrote:
>>> Hi all,
>>>
>>> I frequently find that I've failed to export something in my NAMESPACE
>>> and hence my package doesn't work when it's imported into another
>>> package. Does anyone have suggestion for debugging this type of
>>> problem? R CMD check passes without any ns related errors on both the
>>> importee and the importer.
>>>
>>> I've attached a reproducible example - if you install the development
>>> version of ggplot2 (e.g. with devtools::install_github("ggplot2") the
>>> attached package fails R CMD check with:
>>>
>>>> ### ** Examples
>>>>
>>>> plot(my_plot())
>>> Error in structure(list(data = data, layers = list(), scales = Scales$new(), :
>>> attempt to apply non-function
>>> Calls: plot ... my_plot -> ggplot -> ggplot.data.frame -> structure
>>> Execution halted
>>> Error: Command failed (1)
>>>
>>> Hadley
>>>
>>> --
>>> Assistant Professor / Dobelman Family Junior Chair
>>> Department of Statistics / Rice University
>>> http://had.co.nz/
>>
>>
>>
>> --
>> Assistant Professor / Dobelman Family Junior Chair
>> Department of Statistics / Rice University
>> http://had.co.nz/
>
>
>
--
Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109
Location: M1-B861
Telephone: 206 667-2793
More information about the R-devel
mailing list