3

R で tex 形式でテーブルを生成し、それらを *.rnw ファイルで呼び出す方法はありますか? ユーザー定義関数を使用して多くのテーブルを生成し、sweave/knitr を介してラテックス ファイルでそれらを使用する必要があります。これが私の要点を説明するための簡単な例です...

データ:

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()

もっと良い方法があるかもしれないと思います。私はラテックスコマンドで何をしているのかわかりません。 より良いアプローチを提供することで、誰かがこれを手伝ってくれれば幸いです


ここに私のスウィーブファイルがあります

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

2 に答える 2

3

xtable パッケージを使用できます。

\documentclass{article}
\usepackage{ctable}

\begin{document}

<<somechunk,results=tex,echo=FALSE,results=hide>>=
library(xtable)
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')
@

Here is my table 1:

<<results=tex, echo=FALSE>>=
xtable(data1)
@
\end{document}
于 2012-03-20T21:12:57.250 に答える
3

他の回答で示唆されているように、最も簡単な方法 (Hmisc::latexまたはを使用xtable) は、通常、必要な場合にのみ LaTeX コードを生成することです。

これが不可能な場合は、次のようにする必要があります。

tmp <- latex(data1,file='myfile.tex')

何が起こるかというとlatex、ファイルが作成され、 class のオブジェクトが返されますlatex。次にprintメソッドが呼び出されますが、ファイルをコンパイルして結果を表示しようとしますが、これはあなたの場合には望ましくありません。結果を変数 (使用されません) に代入するか、呼び出しを でラップすると、invisibleへの呼び出しが抑制されprintます。

invisible( latex(data1,file='myfile.tex') )
于 2012-03-21T01:02:27.960 に答える