R Version 1.9.1 (2004-06-21) Mac OS X.3.5 Dual 2GHz PowerPC G5 GUI = "AQUA"
I have a data.frame comprising percentiles with the column headings containing % characters, e.g.
> (pp <- colnames(temp2))
[1] "5%" "10%" "25%" "50%" "75%" "90%" "95%"
I use xtable to convert the data.frame to Latex but I want to protect these % signs from Latex using a backslash in the normal way before calling xtable.
I have tried using gsub as follows;
> gsub("\%","\\%",pp)
[1] "5%" "10%" "25%" "50%" "75%" "90%" "95%"
also
> gsub("%","\134%",pp) #octal for backslash
[1] "5%" "10%" "25%" "50%" "75%" "90%" "95%"
Both of which fail to provide what I need.
I verified my 'regexps' using awk under Darwin thus; $ cat fred "5%" "10%" "25%" "50%" "75%" "90%" "95%" $ awk '{gsub(/%/,"\\%"); print}' <fred "5\%" "10\%" "25\%" "50\%" "75\%" "90\%" "95\%" and $ awk '{gsub(/%/,"\134%"); print}' <fred "5\%" "10\%" "25\%" "50\%" "75\%" "90\%" "95\%"
As a possble 'work around', I noticed that, > chartr("z","\",gsub("%","z%",pp)) Error: syntax error > chartr("z","\\",gsub("%","z%",pp)) [1] "5\\%" "10\\%" "25\\%" "50\\%" "75\\%" "90\\%" "95\\%" > chartr("z","\134",gsub("%","z%",pp)) [1] "5\\%" "10\\%" "25\\%" "50\\%" "75\\%" "90\\%" "95\\%"
As the xtable is then 'catted' to a file and read back (vide infra) I actually end up with what I want using the latter example.
However I am very much left with the feeling that R is in control of me rather than vise versa.
Secondly, as I am building up a character vector of sentences, tables and figures, I wanted to convert my xtable output to a character vector with newline
separators. I have only able to accomplish this by printing to a temporary file thus,
theTx <- "\\documentclass[A4paper,10pt]{article}"
.
.
theTx <- paste(theTx, paste_xtable(temp2,"Percentiles for scores"), sep = "")
.
theTx <- paste(theTx,"\n" ,"\\end{document}","\n", sep = "")
.
cat(theTx) #into a file for Latex
############## with my past_xtable function being ########## paste_xtable <- function(a_table, cap) { sink(file = "levzz", append = FALSE, type = "output") print(xtable(a_table,caption=cap)) sink() #read it back temp <- readLines("levzz", n=-1) #note / get doubled automaticaly unlink("levzz") #delete file a <- "\n" for (i in 1:length(temp)) { a <- paste(a,temp[i],"\n",sep = "") } return(a) }
I should be most grateful for a more elegant solutions to both these issues or a pointer to the documentation.
Paul
______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html