2010-05-17 3 views
1

my.mat < - cbind (1: 5, rnorm (5), 6:10, rnorm (5)) colnames (my.mat) < - c ("Tour" , "Draw", "Turn", "Draw") impression (XTABLE (my.mat))en utilisant gsub pour modifier la sortie de la commande xtable

cède

\begin{table}[ht] 
\begin{center} 
\begin{tabular}{rrrrr} 
    \hline 
& Turn & Draw & Turn & Draw \\ 
    \hline 
1 & 1.00 & -0.72 & 6.00 & 0.91 \\ 
    2 & 2.00 & 0.57 & 7.00 & 0.56 \\ 
    3 & 3.00 & 1.08 & 8.00 & 0.55 \\ 
    4 & 4.00 & 0.95 & 9.00 & 0.46 \\ 
    5 & 5.00 & 1.94 & 10.00 & 1.06 \\ 
    \hline 
\end{tabular} 
\end{center} 
\end{table} 

Je veux filtrer le \ begin {table} et \ end { table} lignes. Je peux le faire en utilisant gsub, mais comment j'obtenir les résultats d'impression (XTABLE (... dans une variable

Merci pour l'aide Stack Overflow R communautaire


EDIT -! Making progrès

Dans mon .Rnw, je

\begin{tablehere} 
{ 

<<echo=false,results=tex>>= 
library(xtable) 
my.mat <- cbind(1:5, rnorm(5), 6:10, rnorm(5)) 
colnames(my.mat) <- c("Turn", "Draw","Turn", "Draw") 
#print(xtable(my.mat)) 

x <- capture.output(print(xtable(my.mat))) 
x <- gsub("\\\\begin\\{tabular\\}.*", "", x, perl=TRUE) 
x <- gsub("\\\\end\\{tabular\\}.*", "", x, perl=TRUE) 
print(x) 

@ 

} 
\end{tablehere} 

qui conduit à

\begin{tablehere} 
{ 

[1] "% latex table generated in R 2.9.2 by xtable 1.5-5 package" 
[2] "% Mon May 17 20:23:09 2010"         
[3] "\\begin{table}[ht]"           
[4] "\\begin{center}"           
[5] ""               
[6] " \\hline"             
[7] " & Turn & Draw & Turn & Draw \\\\ "       
[8] " \\hline"             
[9] "1 & 1.00 & -1.76 & 6.00 & 0.70 \\\\ "      
[10] " 2 & 2.00 & 1.58 & 7.00 & 2.57 \\\\ "      
[11] " 3 & 3.00 & -1.80 & 8.00 & 0.47 \\\\ "      
[12] " 4 & 4.00 & -2.25 & 9.00 & -0.63 \\\\ "     
[13] " 5 & 5.00 & 1.99 & 10.00 & -0.35 \\\\ "     
[14] " \\hline"             
[15] ""               
[16] "\\end{center}"            
[17] "\\end{table}"             
} 
\end{tablehere} 

qui est si proche. Comment puis-je obtenir R pour imprimer correctement?

+0

Deux choses pourraient aider: vous pouvez inclure le code 'gsub()' vous essayez d'utiliser maintenant? Et que voulez-vous dire, obtenir les résultats de print (xtable (...) dans une variable? Voulez-vous dire: dans une structure que vous pourriez passer à gsub? –

+0

> Voulez-vous dire: dans une structure que vous pourriez passer à gsub - Matt Parker Il ya 23 minutes Oui, je réalise que je peux utiliser la méthode de Shane ci-dessous, et je peux supprimer la sortie de l'impression en envoyant la sortie dans un fichier texte, par exemple imprimer (xtable (my.mat) , file = "tmp.R") mais quand j'imprime l'objet x, le code latex est stocké comme le premier élément d'un vecteur, donc je l'imprime et j'obtiens un [1] "... la table ... "où je veux juste imprimer ... la table ... – stevejb

Répondre

4

Qu'en est-cat(x,sep='\n') au lieu de print(x)

+0

C'est exactement ce que je veux. Merci wkmor1 – stevejb

1

Cela fonctionne pour moi:

x <- print(xtable(my.mat)) 
x <- gsub("\\\\begin\\{tabular\\}\\{rrrrr\\}", "", x) 
+0

Je ne pense pas que cela fonctionne, parce que quand vous appelez print (xtable (my.mat)), il imprime également la table actuelle. , quand j'imprime l'objet x t, je reçois [1] "% table de latex générée dans R 2.9.2 par xtable 1.5-5 .... c'est la première entrée dans un vecteur. Cela ne s'imprimera pas dans LaTeX. Merci beaucoup. – stevejb

+0

De l'aide: "La fonction renvoie également (de manière invisible) un vecteur de caractères des résultats (ce qui peut être utile pour le post-traitement)." 'x' comme Shane suggère contient exactement la sortie de la commande d'impression. –

+0

Je pense que la sortie de ce sera du latex. C'est juste stocké dans un vecteur de caractères. Vous pouvez supprimer l'impression en utilisant 'sink' ou quelque chose comme ceci:' capture.output (x <- print (xtable (my.mat)), fichier = 'NUL') '. – Shane

Questions connexes