【问题标题】:using gsub to modify output of xtable command使用 gsub 修改 xtable 命令的输出
【发布时间】:2010-05-17 22:39:45
【问题描述】:

my.mat

产量

\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}

我想过滤掉 \begin{table} 和 \end{table} 行。我可以使用 gsub 做到这一点,但是如何将 print(xtable(... 的结果放入变量中?

感谢 Stack Overflow R 社区的帮助!


编辑 - 取得进展

在我的 .Rnw 中,我有

\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}

导致

\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}

这是如此接近。如何让 R 以正确的方式打印?

【问题讨论】:

  • 有两件事会有所帮助:您能否包含您现在尝试使用的gsub() 代码?你到底是什么意思,将 print(xtable(...
  • >你的意思是:进入一个你可以传递给 gsub 的结构? – Matt Parker 23 分钟前 是的。我意识到我可以在下面使用 Shane 的方法,并且可以通过将输出发送到文本文件来抑制 print 的输出,例如print(xtable(my.mat), file="tmp.R") 但是当我打印 x 对象时,乳胶代码被存储为向量的第一个元素,所以我打印它并得到一个 [1] “......桌子......”我只想打印......桌子......

标签: r


【解决方案1】:

cat(x,sep='\n') 而不是print(x)

【讨论】:

  • 这正是我想要的。谢谢wkmor1
【解决方案2】:

这对我有用:

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

【讨论】:

  • 我认为这行不通,因为当您调用 print(xtable(my.mat)) 时,它还会打印当前表。另外,当我打印 x 对象时,我得到 [1] "% latex table generated in R 2.9.2 by xtable 1.5-5 .... 它是向量中的第一个条目。这不会在 LaTeX 中打印。谢谢你。
  • 来自帮助:“该函数还(不可见地)返回结果的字符向量(这有助于后处理)。” x 正如 Shane 建议的那样,正好包含 print 命令的输出。
  • 我认为它的输出将是乳胶。它只是存储在一个字符向量中。您可以使用sink 或类似的方式禁止打印:capture.output(x &lt;- print(xtable(my.mat)), file='NUL')
  • 感谢您的建议。我已经很接近了,但还没有完全掌握。我更新了我的帖子以显示当前状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 2015-09-04
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多