On 13-11-10 1:16 PM, Jeff Newmiller wrote:> There seems to be some inappropriate quoting in the tabular function from
> the tables package. Consider this example:
>
> library(tables)
> sampledf <- data.frame( Manufacturer=c(rep("Joe & Co.",6)
>                                         ,rep("\\tabular, Inc.",4))
>                         , Tool=rep(c("Shovel","Screwdriver","Harpoon"
>                                   ,"Items","Stuff"),each=2)
>                         , When=rep(c("List","After"),times=5)
> , Price=c(180,190,190,180,200,200,140,145,150,140)
>                         )
> sampledf$MfrTool <- with( sampledf
>                           , factor( paste( Manufacturer, "-", Tool ) ) )
> tabular( MfrTool ~ When * Price * identity, data=sampledf )
>
> which produces for me:
>
>                                             When
>                                             After    List
>                                             Price    Price
>    MfrTool                                  identity identity
>    \\textbackslash{}tabular, Inc. - Items   145      140
>    \\textbackslash{}tabular, Inc. - Stuff   140      150
>    Joe \\textbackslash{}& Co. - Harpoon     200      200
>    Joe \\textbackslash{}& Co. - Screwdriver 180      190
>    Joe \\textbackslash{}& Co. - Shovel      190      180
>
> Although I do intend to pass this through the latex() function, I think
> that in this representation the substitution of '\textbackslash{}' for
> '\' is premature,

Yes, that's a bug.  I have just fixed it.


 and I am not sure why the backslash is getting doubled

That's just the way R prints matrix entries that contain single backslashes. print.tabular just converts the table + labels to a matrix and then prints it without quotes.

> here.  In any event, the ampersand in 'Joe & Co.' is getting a '\' added
> to it (which it shouldn't here), and then when I pass this through the
> latex function I get:

The & backslash is the same bug as the first one.

>
>> latex(tabular( MfrTool ~ When * Price * identity, data=sampledf ))
>
> \begin{tabular}{lcc}
> \hline
>    & \multicolumn{2}{c}{When} \\
>    & After & \multicolumn{1}{c}{List} \\
>    & Price & \multicolumn{1}{c}{Price} \\
> MfrTool  & identity & \multicolumn{1}{c}{identity} \\
> \hline
> \textbackslash{}tabular, Inc. - Items  & $145$ & $140$ \\
> \textbackslash{}tabular, Inc. - Stuff  & $140$ & $150$ \\
> Joe \textbackslash{}& Co. - Harpoon  & $200$ & $200$ \\
> Joe \textbackslash{}& Co. - Screwdriver  & $180$ & $190$ \\
> Joe \textbackslash{}& Co. - Shovel  & $190$ & $180$ \\
> \hline
> \end{tabular}
>
> where 'Joe & Co.' has become illegal TeX.

After the fix, this appears as

> latex(tabular( MfrTool ~ When * Price * identity, data=sampledf ))
\begin{tabular}{lcc}
\hline
 & \multicolumn{2}{c}{When} \\
 & After & \multicolumn{1}{c}{List} \\
 & Price & \multicolumn{1}{c}{Price} \\
MfrTool  & identity & \multicolumn{1}{c}{identity} \\
\hline
\tabular, Inc. - Items  & $145$ & $140$ \\
\tabular, Inc. - Stuff  & $140$ & $150$ \\
Joe & Co. - Harpoon  & $200$ & $200$ \\
Joe & Co. - Screwdriver  & $180$ & $190$ \\
Joe & Co. - Shovel  & $190$ & $180$ \\
\hline
\end{tabular}

which is probably still not what you want: here you'd want the & in the company name to be escaped. I'll have to think about this a bit to find the best solution, but in the meantime, if you use the R-forge version, you can get the right behaviour by including the escape in the original factor level. (What I may do is include some information about whether something has been texified or not, so that it only happens once. Or perhaps I will just never do it unless you explicitly ask for it. We'll see.)

Duncan Murdoch

>
> For reference,, my session:
>
>> sessionInfo()
> R version 2.15.3 (2013-03-01)
> Platform: i386-w64-mingw32/i386 (32-bit)
>
> locale:
> [1] LC_COLLATE=English_United States.1252
> [2] LC_CTYPE=English_United States.1252
> [3] LC_MONETARY=English_United States.1252
> [4] LC_NUMERIC=C
> [5] LC_TIME=English_United States.1252
>
> attached base packages:
> [1] splines   stats     graphics  grDevices utils     datasets  methods
> [8] base
>
> other attached packages:
> [1] tables_0.7      Hmisc_3.12-2    Formula_1.1-1   survival_2.37-4
>
> loaded via a namespace (and not attached):
> [1] cluster_1.14.4  grid_2.15.3     lattice_0.20-24 rpart_4.1-3
>
>
> --------------------------------------------------------------------------- > Jeff Newmiller The ..... ..... Go Live... > DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... > Live: OO#.. Dead: OO#.. Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers) .OO#. .OO#. rocks...1k
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to