有没有办法在 R 中生成 tex 格式的表,然后在我的 *.rnw 文件中调用它们
我必须使用一些用户定义的函数生成很多表,然后通过 sweave/knitr 在我的 latex 文件中使用它们。
这是一个简单的例子来说明我的观点......
数据:
x1 <- round(rnorm(10),2)
x2 <- sample(c('a','b','c'),10,replace=TRUE)
data1 <- cbind(x1,noquote(x2));data1 <- as.data.frame(data1)
names(data1)=c('X1','X2')
现在我想把这个
data1
放在一个 tex 文件中,如下所示latex(data1,file='myfile.tex')
在我的 sweave 文档中运行上述内容时,R-studio 陷入了过程不会结束的感觉。
我收到以下错误
No file file1170690e2c79.aux.
*geometry* driver: auto-detecting
*geometry* detected driver: dvips
[1] (C:\Users\~~~\AppData\Local\Temp\RtmpeuvW08\file1170690e2c79.aux) )
Output written on file1170690e2c79.dvi (1 page, 604 bytes).
Transcript written on file1170690e2c79.log.
所以,我使用了以下
sink('myfile.tex')
latex(data1,file='')
sink()
我想可能有更好的方法。我不知道我在 latex 命令中犯了什么错误。
如果有人可以通过为我提供更好的方法来帮助我,我将不胜感激
这是我的 sweave 文件
\documentclass{article}
\usepackage{ctable}
\title{Untitled}
\begin{document}
\maketitle
<<somechunk,results=tex,echo=FALSE>>=
x1 <- round(rnorm(10),2)
x2 <- sample(c('a','b','c'),10,replace=TRUE)
data1 <- cbind(x1,noquote(x2));data1 <- as.data.frame(data1)
names(data1)=c('X1','X2')
sink('myfile.tex')
latex(data1,file='')
sink()
@
Here is my table 1 \include{myfile}
\end{document}
最佳答案
正如其他答案中所建议的,最简单的
(使用 Hmisc::latex
或 xtable
)
通常只在需要时生成 LaTeX 代码。
如果这是不可能的,以下应该工作:
tmp <- latex(data1,file='myfile.tex')
发生的事情是
latex
创建文件并返回一个
latex
类的对象。然后调用
print
方法,但它尝试编译文件并显示结果,这在您的情况下是不需要的。
将结果分配给变量(不会使用),
或将调用包装在
invisible
中,抑制对 print
的调用。invisible( latex(data1,file='myfile.tex') )
关于r - 在我的主文档中包含几个 tex 格式的表格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9794827/