[R] Sweave: tables vs matrices

Markus Jäntti markus.jantti at iki.fi
Wed Sep 19 22:32:28 CEST 2007


Gavin Simpson wrote:
> On Fri, 2007-09-14 at 11:24 +0100, Robin Hankin wrote:
>> Hi Gavin
>>
>> thanks for that. . . it does 99% of what I wanted.
>> I'd forgotten about the na.print argument.
>>
>> It's considerably nicer than my other solution
>> which converted to character, then jj[is.na(jj)] <- "-"
>> then noquote(jj).
>>
>> But  sometimes I just need nice LaTeX tables
>> and I can't think of a way to arrange things
>> so that: (i) I have only one set of numbers to maintain,
>> and (ii) an NA appears as a "-" in the LaTeX table.
> 
> Ok, then the xtable package and function is your answer. You can use
> this within Sweave but I think you need to set the output to latex in
> the Sweave chunk?
> 
> Is this closer to what you want?
> 
>> print.xtable(xtable(jj), NA.string = "-")
> % latex table generated in R 2.5.1 by xtable 1.4-6 package
> % Fri Sep 14 11:43:34 2007
> \begin{table}[ht]
> \begin{center}
> \begin{tabular}{rrrrrr}
>   \hline
>  & 1 & 2 & 3 & 4 & 5 \\
>   \hline
> 1 & 2.00 & 3.00 & 4.00 & 1.00 & 10.00 \\
>   2 & 0.00 & 5.00 & 7.00 & $-$ & 12.00 \\
>   3 & 3.00 & 7.00 & $-$ & 4.00 & 14.00 \\
>   4 & 2.00 & $-$ & $-$ & 2.00 & 4.00 \\
>   5 & 7.00 & 15.00 & 11.00 & 7.00 & 40.00 \\
>    \hline
> \end{tabular}
> \end{center}
> \end{table}
> 

Another approach that I use a lot is to use the latex facilities in Hmisc by 
Frank Harrell.

For example,

\documentclass{article}

\begin{document}
\SweaveOpts{fig=FALSE, results=hide, echo=FALSE}

<<>>=

library(Hmisc)
Z <- matrix(rnorm(20), ncol=4)
rownames(Z) <- letters[1:nrow(Z)]
colnames(Z) <- LETTERS[1:ncol(Z)]

@

<<results=tex>>=
latex(A, dec=3, center='none', table.env=FALSE, file="")

@

<<results=tex>>=

latex(A, dec=1, cgroup=c("Column labels"), n.cgroup=c(ncol(Z)),
       caption="A title", center='centering', file="")


@
\end{document}

Markus

> HTH
> 
> G
> 
>> best wishes
>>
>> rksh
>>
>> On 14 Sep 2007, at 09:52, Gavin Simpson wrote:
>>
>>> On Fri, 2007-09-14 at 09:34 +0100, Robin Hankin wrote:
>>>> Hello everyone
>>>>
>>>>
>>>> I am preparing a document using Sweave in which I want my matrices
>>>> to appear as tables.  I am running into problems because as my
>>>> Rnw files stand, I have to  change table entries twice, once for
>>>> the matrix and once for the typeset table.
>>>>
>>>> I have lots of material like the following.  How can I arrange
>>>> my Rnw file so that  I only have to change one set of figures
>>>> when my numbers change?
>>>>
>>>> One reason I prefer tables here is that the NA entries
>>>> appear as "-" in the table, but as "NA" in the Schunk.
>>>> Is there a way to make the Schunk  typeset NAs
>>>> as minuses?
>>> See ?print.default and its argument na.print:
>>>
>>>> print.default(jj, na.print = "-")
>>>      [,1] [,2] [,3] [,4] [,5]
>>> [1,]    2    3    4    1   10
>>> [2,]    0    5    7    -   12
>>> [3,]    3    7    -    4   14
>>> [4,]    2    -    -    2    4
>>> [5,]    7   15   11    7   40
>>>
>>> Is that what you meant? It still prints the [1,] bits...
>>>
>>> HTH
>>>
>>> G
>>>
>>>>
>>>>
>>>> \begin{table}
>>>> \centering
>>>> \begin{tabular}{|cccc|c|}\hline
>>>> \multicolumn{4}{|c|}{brand}&\\ \hline
>>>> A&B&C&D&total\\ \hline
>>>> 2       & 3      &  4       & 1    & 10   \\
>>>> 0       & 5       & 7       & -    & 12   \\
>>>> 3       & 7       & -       & 4    & 14   \\
>>>> 2       & -       & -       & 2    &  4    \\ \hline
>>>> 7&15&11&7&40\\ \hline
>>>> \end{tabular}
>>>> \caption{snipped caption}
>>>> \end{table}
>>>>
>>>>
>>>> <<>>=
>>>> jj <- matrix(c(2,  3,  4, 1,
>>>>                 0,  5,  7, NA,
>>>>                 3,  7, NA, 4,
>>>>                 2, NA, NA, 2
>>>>                 ),byrow=TRUE,nrow=4)
>>>> jj <- rbind(jj,apply(jj,2,sum,na.rm=TRUE))
>>>> jj <- cbind(jj,apply(jj,1,sum,na.rm=TRUE))
>>>> jj
>>>> @
>>>>
>>>>
>>>>
>> --
>> Robin Hankin
>> Uncertainty Analyst
>> National Oceanography Centre, Southampton
>> European Way, Southampton SO14 3ZH, UK
>>   tel  023-8059-7743
>>


-- 
Markus Jantti
Abo Akademi University
markus.jantti at iki.fi
http://www.iki.fi/~mjantti



More information about the R-help mailing list