[R] Conflict between xtable and Hmisc when using Sweave?

Liaw, Andy andy_liaw at merck.com
Mon May 16 17:46:15 CEST 2005


For fixing the problem you have, you need:

"xtable.mylabel<-" <- get("label<-.xtable", "package:xtable")

I.e., you need the replacement function.

One possibility of resolving the conflict, as I communicated with Frank, is
to make label() and label<-() in Hmisc the S3 default methods, as xtable
defines the methods for xtable, but provided no default methods.  This
probably has the minimal impact (if any) on backward compatibility in both
packages.

BTW, you should call print() rather than print.xtable().

Andy

> From: Sander Oom 
> 
> Hi David,
> 
> Thanks for creating and supporting xtable. Glad I can contribute by 
> pointing out problems!
> 
> An earlier response from Frank Harrell Jr. suggests that the 
> responsibility to resolve the conflict lies primarily with 
> you, as Hmisc 
> 'was there first'.
> 
> Not sure how disputes over package conflicts are generally resolved!?
> 
> I'll await a final decision!
> 
> Thanks again,
> 
> Sander.
> 
> 
> David B. Dahl wrote:
> > Sander,
> > 
> > Thanks for pointing out the conflict between Hmisc and 
> xtable.  I am not 
> > sure I have a good solution.
> > 
> > My understand of the namespace solution is that packages 
> can specify 
> > which variables to export for use by the package users.  The label 
> > function is not an internal function, rather one what is 
> intended for 
> > the user.
> > 
> > Renaming the label() would resolve the conflict with the 
> Hmisc package, 
> > but make xtable not compatible with previous versions.
> > 
> > As noted by Andy, label() in xtable is an S3 generic with an 
> > implementation label.xtable() specific to the xtable 
> package.  Perhaps 
> > Frank of Hmisc might be willing to make his follow the S3 
> generic naming 
> > convention?
> > 
> > I am open to suggestions and, more especially, code.  
> Thanks for using 
> > xtable.
> > 
> > -- David
> > 
> > 
> > Liaw, Andy wrote:
> > 
> >> You need to add the namespace to the source package, by adding a 
> >> NAMESPACE
> >> file.  There's an R News article by Prof. Tierney on how 
> to do this.  
> >> Also
> >> see the `Writing R Extensions' manual.  You should get the package
> >> maintainer to do that, as that constitute a change in the 
> package source
> >> code.
> >>
> >> Short of that, you should make sure that Hmisc is loaded 
> later than 
> >> xtable,
> >> and use something like what Gabor suggested to access label() in 
> >> xtable.  (I
> >> would use some other name, though: label() in xtable is 
> already an S3
> >> generic).
> >>
> >> Andy
> >>
> >>  
> >>
> >>> From: Sander Oom
> >>> Hi Andy and Gabor,
> >>>
> >>> Thanks for your help so far! I am discovering another R dimension.
> >>>
> >>> Trying to put my head around all this....the conflict actually 
> >>> exposes itself when calling summarize(Hmisc). 
> Summarize(Hmisc) calls 
> >>> label internally, so I can not call it explicitly. Simply calling 
> >>> label(xtable) explicitly will not solve the problem with 
> >>> summarize(Hmisc).
> >>>
> >>> Thus, I should use namespaces as Andy is suggesting. Now 
> I just need 
> >>> to know how I 'add namespace' to a library? Does 
> 'loadNamespace' have 
> >>> something to do with it?
> >>>
> >>> Thanks very much for your help!
> >>>
> >>> Sander.
> >>>
> >>>
> >>> ## From Venables and Ripley (2002) p.165.
> >>> N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
> >>> P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
> >>> K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
> >>> yield <-c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,
> >>>       62.8,55.8,69.5,55.0,
> >>>       62.0,48.8,45.5,44.2,52.0,
> >>>       51.5,49.8,48.8,57.2,59.0,53.2,56.0)
> >>> npk <- data.frame(block=gl(6,4), N=factor(N), P=factor(P),
> >>>                   K=factor(K), yield=yield)
> >>> ## to show the effects of re-ordering terms contrast the two fits
> >>> tmpAov <- aov(yield ~ block + N * P + K, npk)
> >>> tmpTable <- xtable(tmpAov , caption="Test export of ANOVA table.",
> >>>   label="tab:Anova")
> >>> print.xtable(tmpTable, type="latex", floating=TRUE,
> >>>   table.placement="h", caption.placement="top",
> >>>   latex.environments=c("center"))
> >>>
> >>> Alternatively, using namespace for xtable:
> >>>
> >>> tmpTable <- xtable(tmpAov , caption="Test export of ANOVA table.")
> >>> xtable:::label(tmpTable) <- paste("tab:Anova")
> >>> print.xtable(tmpTable, type="latex", floating=TRUE,
> >>>   table.placement="ht", caption.placement="top",
> >>>   latex.environments=c("center"))
> >>>
> >>>
> >>>
> >>> Gabor Grothendieck wrote:
> >>>   
> >>>> Even without a namespace one could explicitly reference the label
> >>>> in xtable via:
> >>>>
> >>>> xtable.label <- get("label", "package:xtable")
> >>>>
> >>>> On 5/16/05, Liaw, Andy <andy_liaw at merck.com> wrote:
> >>>>     
> >>>>> One possible solution without renaming the functions is 
> to       
> >>> add namespace to
> >>>   
> >>>>> either xtable or Hmisc.  Given the size of Hmisc, it       
> >>> probably would be much
> >>>   
> >>>>> easier to do that with xtable.
> >>>>>
> >>>>> With namespace in xtable, you can do xtable:::label() to       
> >>> refer to the
> >>>   
> >>>>> label() in xtable specifically.
> >>>>>
> >>>>> Andy
> >>>>>
> >>>>>       
> >>>>>> From: Of Sander Oom
> >>>>>>
> >>>>>> Dear David,
> >>>>>>
> >>>>>> I would like to use summarize(Hmisc) and 
> print.xtable(xtable) in a
> >>>>>> single Sweave document, but a conflict with the 
> 'label' function
> >>>>>> prohibits this at the moment!
> >>>>>>
> >>>>>> Would you be able to correct the conflicting code? I 
> will         
> >>> gladly test
> >>>   
> >>>>>> the new package!
> >>>>>>
> >>>>>> I have tried latex(Hmisc) to export the anova table, but
> >>>>>> results are not
> >>>>>> promising! I prefer xtable!!
> >>>>>>
> >>>>>> Thanks,
> >>>>>>
> >>>>>> Sander.
> >>>>>>
> >>>>>> Frank E Harrell Jr wrote:
> >>>>>>         
> >>>>>>> Sander Oom wrote:
> >>>>>>>           
> >>>>>>>> Dear Frank,
> >>>>>>>>
> >>>>>>>> I have a Sweave document in which I export anova (aov)
> >>>>>>>>             
> >>>>>> tables to Latex
> >>>>>>         
> >>>>>>>> and calculate some summary statistics with 
> summarize{Hmisc} for a
> >>>>>>>> graph (as in the example below).
> >>>>>>>>
> >>>>>>>> I currently use the following code for the aov tables:
> >>>>>>>> <<results=tex>>=
> >>>>>>>> tmp <- datGrassHC[datGrassHC$Loc > 0 & datGrassHC$Loc < 9 ,]
> >>>>>>>> tmpAov <- 
> aov(Height~Geology*Altitude*Origin*BinInOut             
> >>> , data=tmp)
> >>>   
> >>>>>>>> tmpTable <- xtable (tmpAov ,
> >>>>>>>>   caption="ANOVA table for vegetation height.",
> >>>>>>>>   label="tab:AnovaHeight"
> >>>>>>>>   )
> >>>>>>>> print.xtable(tmpTable, type="latex", floating=TRUE,
> >>>>>>>>   table.placement="ht", caption.placement="top",
> >>>>>>>>   latex.environments=c("center"))
> >>>>>>>>   )
> >>>>>>>> @
> >>>>>>>>
> >>>>>>>> I used xtables, because it has a working aov example. I
> >>>>>>>>             
> >>>>>> would be happy
> >>>>>>         
> >>>>>>>> to use an alternative if I knew how! Would you have  
>            
> >>> sample code to
> >>>   
> >>>>>>>> illustrate how to export an aov table to Latex using 
>             
> >>> latex{Hmisc}.
> >>>   
> >>>>>>>> Thanks very much for your help,
> >>>>>>>>
> >>>>>>>> Sander.
> >>>>>>>>
> >>>>>>>> Frank E Harrell Jr wrote:
> >>>>>>>>
> >>>>>>>>             
> >>>>>>>>> Sander Oom wrote:
> >>>>>>>>>
> >>>>>>>>>               
> >>>>>>>>>> Dear R users,
> >>>>>>>>>>
> >>>>>>>>>> The Sweave code below runs fine, as it is. However, an
> >>>>>>>>>>                 
> >>>>>> error occurs
> >>>>>>         
> >>>>>>>>>> when the line 'library(xtable)' is uncommented:
> >>>>>>>>>> Error:  chunk 1
> >>>>>>>>>> Error in "label<-"(`*tmp*`, value = "month") :
> >>>>>>>>>>       no applicable method for "label<-"
> >>>>>>>>>>
> >>>>>>>>>> Is anybody aware of this and knows a workaround?
> >>>>>>>>>>
> >>>>>>>>>> Thanks,
> >>>>>>>>>>
> >>>>>>>>>> Sander.
> >>>>>>>>>>
> >>>>>>>>>> *******************
> >>>>>>>>>>
> >>>>>>>>>> \documentclass[a4paper]{article}
> >>>>>>>>>> \title{Sweave Test for summarize}
> >>>>>>>>>> \author{Sander Oom}
> >>>>>>>>>>
> >>>>>>>>>> \usepackage{a4wide}
> >>>>>>>>>>
> >>>>>>>>>> \begin{document}
> >>>>>>>>>>
> >>>>>>>>>> \maketitle
> >>>>>>>>>>
> >>>>>>>>>> \begin{figure}[ht]
> >>>>>>>>>> \begin{center}
> >>>>>>>>>> <<fig=TRUE,echo=FALSE>>=
> >>>>>>>>>> # library(xtable)
> >>>>>>>>>> library(Hmisc)
> >>>>>>>>>> set.seed(111)
> >>>>>>>>>> dfr <- expand.grid(month=1:12, year=c(1997,1998), 
> reps=1:100)
> >>>>>>>>>> month <- dfr$month
> >>>>>>>>>> year <- dfr$year
> >>>>>>>>>> y <- abs(month-6.5) + 2*runif(length(month)) + year-1997
> >>>>>>>>>> s <- summarize(y, llist(month,year), smedian.hilow,
> >>>>>>>>>>                 
> >>>>>> conf.int=.5)
> >>>>>>         
> >>>>>>>>>> print(xYplot(Cbind(y,Lower,Upper) ~ month,                 
> >>> groups=year, data=s,
> >>>   
> >>>>>>>>>>       keys='lines', method='alt', type='b'))
> >>>>>>>>>> @
> >>>>>>>>>> \end{center}
> >>>>>>>>>> \end{figure}
> >>>>>>>>>>
> >>>>>>>>>> \end{document}
> >>>>>>>>>>
> >>>>>>>>>> ************************
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>                 
> >>>>>>>>>>> version
> >>>>>>>>>>>                   
> >>>>>>>>>>        _
> >>>>>>>>>> platform i686-pc-linux-gnu
> >>>>>>>>>> arch     i686
> >>>>>>>>>> os       linux-gnu
> >>>>>>>>>> system   i686, linux-gnu
> >>>>>>>>>> status
> >>>>>>>>>> major    2
> >>>>>>>>>> minor    1.0
> >>>>>>>>>> year     2005
> >>>>>>>>>> month    04
> >>>>>>>>>> day      18
> >>>>>>>>>> language R
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>                 
> >>>>>>>>> I feel this is an xtable problem because Hmisc has being
> >>>>>>>>>               
> >>>>>> using label
> >>>>>>         
> >>>>>>>>> and label<- since 1991.
> >>>>>>>>>
> >>>>>>>>> Frank
> >>>>>>>>>
> >>>>>>>>>               
> >>>>>>> There are ways to make functions from one area 
> override those from
> >>>>>>> another, but the real solution is to ask the xtable author
> >>>>>>>           
> >>>>>> not to have
> >>>>>>         
> >>>>>>> functions that conflict with the (older) Hmisc 
> package.  -Frank
> >>>>>>>
> >>>>>>>           
> >>>>>> -- 
> >>>>>> --------------------------------------------
> >>>>>> Dr Sander P. Oom
> >>>>>> Animal, Plant and Environmental Sciences,
> >>>>>> University of the Witwatersrand
> >>>>>> Private Bag 3, Wits 2050, South Africa
> >>>>>> Tel (work)      +27 (0)11 717 64 04
> >>>>>> Tel (home)      +27 (0)18 297 44 51
> >>>>>> Fax             +27 (0)18 299 24 64
> >>>>>> Email   sander at oomvanlieshout.net
> >>>>>> Web     www.oomvanlieshout.net/sander
> >>>>>>
> >>>>>> ______________________________________________
> >>>>>> R-help at stat.math.ethz.ch mailing list
> >>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
> >>>>>> PLEASE do read the posting guide!
> >>>>>> http://www.R-project.org/posting-guide.html
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>         
> >>>>> ______________________________________________
> >>>>> R-help at stat.math.ethz.ch mailing list
> >>>>> https://stat.ethz.ch/mailman/listinfo/r-help
> >>>>> PLEASE do read the posting guide!       
> >>> http://www.R-project.org/posting-guide.html
> >>>   
> >>> -- 
> >>>
> >>> --------------------------------------------
> >>> Dr Sander P. Oom
> >>> Animal, Plant and Environmental Sciences,
> >>> University of the Witwatersrand
> >>> Private Bag 3, Wits 2050, South Africa
> >>> Tel (work)      +27 (0)11 717 64 04
> >>> Tel (home)      +27 (0)18 297 44 51
> >>> Fax             +27 (0)18 299 24 64
> >>> Email   sander at oomvanlieshout.net
> >>> Web     www.oomvanlieshout.net/sander
> >>> ---------------------------------------------
> >>>
> >>>
> >>>
> >>>   
> >>
> >>
> >>
> >> 
> --------------------------------------------------------------
> ---------------- 
> >>
> >> Notice:  This e-mail message, together with any 
> attachments, contains 
> >> information of Merck & Co., Inc. (One Merck Drive, 
> Whitehouse Station, 
> >> New Jersey, USA 08889), and/or its affiliates (which may be known 
> >> outside the United States as Merck Frosst, Merck Sharp & 
> Dohme or MSD 
> >> and in Japan, as Banyu) that may be confidential, proprietary 
> >> copyrighted and/or legally privileged. It is intended 
> solely for the 
> >> use of the individual or entity named on this message.  If 
> you are not 
> >> the intended recipient, and have received this message in error, 
> >> please notify us immediately by reply e-mail and then 
> delete it from 
> >> your system.
> >> 
> --------------------------------------------------------------
> ---------------- 
> >>
> >>  
> >>
> > 
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! 
> > http://www.R-project.org/posting-guide.html
> > 
> 
> 
> -- 
> --------------------------------------------
> Dr Sander P. Oom
> Animal, Plant and Environmental Sciences,
> University of the Witwatersrand
> Private Bag 3, Wits 2050, South Africa
> Tel (work)      +27 (0)11 717 64 04
> Tel (home)      +27 (0)18 297 44 51
> Fax             +27 (0)18 299 24 64
> Email   sander at oomvanlieshout.net
> Web     www.oomvanlieshout.net/sander
> ---------------------------------------------
> 
> 
>




More information about the R-help mailing list