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
sure I have a good solution.
My understand of the namespace solution is that packages
which variables to export for use by the package users. The label
function is not an internal function, rather one what is
the user.
Renaming the label() would resolve the conflict with the
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
Frank of Hmisc might be willing to make his follow the S3
convention?
I am open to suggestions and, more especially, code.
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
Also
see the `Writing R Extensions' manual. You should get the package
maintainer to do that, as that constitute a change in the
code.
Short of that, you should make sure that Hmisc is loaded
xtable,
and use something like what Gabor suggested to access label() in
xtable. (I
would use some other name, though: label() in xtable is
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).
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
to know how I 'add namespace' to a library? Does
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
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
prohibits this at the moment!
Would you be able to correct the conflicting code? I
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
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),
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
another, but the real solution is to ask the xtable author
functions that conflict with the (older) Hmisc
--
--------------------------------------------
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