17

Rでレポートをknitrで書いています。レポートにテーブルを生成するために xtable() を使用しています。テーブルの 1 つに、負の数と正の数の両方が含まれています。負の数の色を赤に変えたいです。どうやってやるの?明らかに、簡単な解決策の 1 つは、xtable が生成するラテックス コードを変更することですが、新しいデータセットで数値が変更される可能性があるという自動レポートがあり、色を手動で設定したくないことに注意してください。

簡単なコードを次に示します。

\documentclass{article}
\begin{document}
<<simpleExamp, results=tex, echo=FALSE>>=
library(knitr)
library(xtable)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
xtable(testMatrix)
@
\end{document} 

負の数を赤くするにはどうすればよいですか? ご協力ありがとうございました。

4

2 に答える 2

25

capture.output()を (暗黙の) 呼び出しによって出力された行をキャプチャするために使用できますprint.xtable()。次にgsub()、各負の数を で囲むパターンと置換を使用して、出力に適用します\textcolor{red}{}。最後にcat()withを使用しsep="\n"て、変更された行をファイルに書き出し*.texます。

\documentclass{article}
\begin{document}
<<simpleExamp, results="asis", echo=FALSE>>=
library(knitr)
library(xtable)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
## I added the following three lines
xt <- capture.output(xtable(testMatrix))
xt_mod <- gsub("(\\s|^)(-\\d*)", "\\1\\\\textcolor{red}{\\2}", xt)
cat(xt_mod, sep="\n")
@
\end{document}

(また、knitr が「優先」し、より迅速に処理する に置き換えたことにも注意してくださいresults=tex。)results="asis"


編集:結果のテーブルの画像を追加します。(SO 対応の形式で取得するには、コードにいくつかの調整が必要でした。これも以下に含まれています。)

ここに画像の説明を入力

\documentclass{standalone}
\renewenvironment{table}{}{}% Ignore `table` environment in standalone mode.
\begin{document}
<<simpleExamp, results="asis", echo=FALSE>>=
library(knitr)
library(xtable)
cat("\\Huge\n\n")
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
## I added the following three lines
xt <- capture.output(print.xtable(xtable(testMatrix), table.placement=NULL))
xt_mod <- gsub("(\\s|^)(-\\d*)", "\\1\\\\textcolor{red}{\\2}", xt)
cat(xt_mod, sep="\n")
@
\end{document}
于 2012-08-27T20:16:12.010 に答える