On Jun 29, 2010, at 10:08 AM, Ottorino-Luca Pantani wrote:
> Dear R-users,
> please consider the following minimal example:
>
> \documentclass[a4paper,titlepage,onecolumn,12pt]{article}
> \usepackage[italian]{babel}
> \usepackage{amssymb}
> \usepackage[utf8x]{inputenc}
> \usepackage[pdftex]{graphicx}
> \begin{document}
>
> <<label=test, echo=FALSE, results=tex>>> df.data1 <-
> cbind.data.frame(A = rnorm(18),
> B =factor(rep(LETTERS[1:6], each=3)))
> myMean <- tapply(df.data1$A, df.data1$B, FUN = mean)
> mySD <- tapply(df.data1$A, df.data1$B, FUN = sd)
> foo <- matrix(c(myMean, mySD), ncol=2, nrow=6)
> colnames(foo) <- c("Mean", "Std.Dev")
> tmpTable <- xtable(foo, caption ="Simulated data",
> label="tab:four", digits=2)
> print(tmpTable, caption.placement="top")
> @
>
> \end{document}
>
> Is it possible to insert the plus/minus sign (?) between the two columns ?
> I mean within R/Sweave and not in the resulting .tex file ?
>
> A possible workaround could be :
> .......
> foo.df <- as.data.frame(foo)
> foo.df$Std.Dev <- paste("?", round(mySD,2), sep="")
> tmpTable <- xtable(foo.df, caption ="Simulated data",
> label="tab:five", digits=2)
> print(tmpTable, caption.placement="top")
> @
>
> Any other solution?
Don't use "?" as the character, as that will be impacted upon by
various issues, such as locale and fonts.
Use the available LaTeX symbols, which in this case is \pm. See:
http://www.ctan.org/tex-archive/info/symbols/comprehensive/symbols-letter.pdf
In the case of this symbol, you need to put LaTeX into math mode by using
'$' to surround the symbol:
$\pm$
However, with R, you need to double the backslashes, otherwise the backslash
will be interpreted as an escape sequence. Thus, you need:
$\\pm$
So, for example:
> paste("$\\pm$", 1.34, sep="")
[1] "$\\pm$1.34"
I believe you then need to tweak the sanitize.text.function argument in
print.xtable() to properly handle the backslashes.
HTH,
Marc Schwartz