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
either xtable or Hmisc. Given the size of Hmisc, it
easier to do that with xtable.
With namespace in xtable, you can do xtable:::label() to
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
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:
Dear Frank,
I have a Sweave document in which I export anova (aov)
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
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
to use an alternative if I knew how! Would you have
illustrate how to export an aov table to Latex using
Thanks very much for your help,
Sander.
Frank E Harrell Jr wrote:
Dear R users,
The Sweave code below runs fine, as it is. However, an
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,
print(xYplot(Cbind(y,Lower,Upper) ~ month,
keys='lines', method='alt', type='b'))
@
\end{center}
\end{figure}
\end{document}
************************
_
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
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
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