[R] Conflict between xtable and Hmisc when using Sweave?
Sander Oom
sander at oomvanlieshout.net
Mon May 16 16:25:30 CEST 2005
I tried to follow your suggestions, but without success:
Error: couldn't find function "xtable.mylabel<-"
... resulting from the code below.
Any suggestions?
Thanks,
Sander.
library(xtable)
xtable.mylabel <- get("label", "package:xtable")
library(Hmisc) # provides summarize
set.seed(1)
temperature <- rnorm(300, 70, 10)
month <- sample(1:12, 300, TRUE)
year <- sample(2000:2001, 300, TRUE)
g <- function(x)c(Mean=mean(x,na.rm=TRUE),Median=median(x,na.rm=TRUE))
summarize(temperature, month, g)
## 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="ANOVA table for vegetation height.")
xtable.mylabel(tmpTable) <- paste("tab:AnovaHeight")
print.xtable(tmpTable, type="latex", floating=TRUE,
table.placement="h", caption.placement="top",
latex.environments=c("center"),
title=first.word(deparse(substitute(object))),
append=FALSE
)
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 attachment...{{dropped}}
More information about the R-help
mailing list