Conflict between xtable and Hmisc when using Sweave?
I am resending this since I sent it about an hour ago and still have not seen it appear on R-help. I assume it never went out but sorry if it did and you get it twice.
On 5/16/05, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
Using label as an lvalue (i.e. on the left hand side of the assignment)
causes it to refer to a different function, not label itself.
Any any rate, looking at your example,
it seems that you don't actually need to use Hmisc and xtable at the same time
so just make sure that whichever you want at a particular point
in your code is the only one of the two loaded:
library(Hmisc)
...code that involves Hmisc but not xtable...
detach("package:Hmisc")
library(xtable)
...code that involves xtable but not Hmisc...
On 5/16/05, Sander Oom <sander at oomvanlieshout.net> wrote:
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 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. ------------------------------------------------------------------------------