LoginSignup
0
3

More than 5 years have passed since last update.

Rで数値実験結果をすばやくTexの表に

Posted at

はじめに

Rで数値実験を行い、それをTexにまとめるときみんなどうしてるんだろうか

  1. 1つずつ入力
  2. RのTex出力系パッケージを使う

自分は1で1つずつ入力していたのだが、そろそろきつくなってきた。しかし、Texに詳しいわけでもなく、ましてやRのTex出力系ライブラリにも詳しくない(日本語記事もあまりなく)ので、最低限出力できて少し自動化すればいいやと思ったので、そのやり方を共有

はっきり言って自分だけしか使えないと思うので、Tipsでもなんでもなくただのメモ

パッケージ

自分はHmiscパッケージを使う。基本の解説はこちらにあるとおり

使い方

install.packages("Hmisc")
library(Hmisc)

自分のよくあるケース

  • パラメータ1(P=1)、パラメータ2(P=2)… のときに、それぞれのモデルの精度の平均と標準偏差を出力したい
  • 3ケタ表示で
  • 平均 ± 標準偏差
  • 標準偏差は文字を小さく(というか、 _ で)

データ

# 値はこの例ではランダムで
vec.mean1 <- runif(6, 0.5, 1.0) %>% sprintf("%.3f", .)
vec.sd1 <- runif(6, 0.01, 0.1) %>% sprintf("%.3f", .)
vec.mean2 <- runif(6, 0.5, 1.0) %>% sprintf("%.3f", .)
vec.sd2 <- runif(6, 0.01, 0.1) %>% sprintf("%.3f", .)
vec.mean3 <- runif(6, 0.5, 1.0) %>% sprintf("%.3f", .)
vec.sd3 <- runif(6, 0.01, 0.1) %>% sprintf("%.3f", .)
# データフレーム作成
df <- data.frame(P1 = paste0("$",vec.mean1,"_{¥pm ",vec.sd1,"}$"),
                 P2=  paste0("$",vec.mean2,"_{¥pm ",vec.sd2,"}$"),
                 P3 = paste0("$",vec.mean3,"_{¥pm ",vec.sd3,"}$")
                 )
# 行名
rownames(df) <- c("model1", "model2", "model3", "model4", "model5", "model6")

表示

latex(
  df,                   # 配列型のデータ
  file="",              # LaTeX ファイルの保存先
  title="Model",        # 1行1列目のセルの内容
  label="table1",       # LaTeX の \label に相当
  caption="table1の結果" # LaTeX の \caption に相当
)

すると、以下のように出力される

%latex.default(df, file = "", title = "Model", label = "table1",     caption = "table1の結果")%
\begin{table}[!tbp]
\caption{table1の結果\label{table1}} 
\begin{center}
\begin{tabular}{llll}
\hline\hline
\multicolumn{1}{l}{Model}&\multicolumn{1}{c}{P1}&\multicolumn{1}{c}{P2}&\multicolumn{1}{c}{P3}\tabularnewline
\hline
model1&$0.570_{¥pm 0.089}$&$0.608_{¥pm 0.019}$&$0.651_{¥pm 0.015}$\tabularnewline
model2&$0.824_{¥pm 0.097}$&$0.525_{¥pm 0.067}$&$0.626_{¥pm 0.066}$\tabularnewline
model3&$0.724_{¥pm 0.077}$&$0.789_{¥pm 0.100}$&$0.921_{¥pm 0.036}$\tabularnewline
model4&$0.973_{¥pm 0.027}$&$0.848_{¥pm 0.021}$&$0.807_{¥pm 0.055}$\tabularnewline
model5&$0.999_{¥pm 0.026}$&$0.761_{¥pm 0.061}$&$0.804_{¥pm 0.028}$\tabularnewline
model6&$0.574_{¥pm 0.097}$&$0.792_{¥pm 0.037}$&$0.524_{¥pm 0.074}$\tabularnewline
\hline
\end{tabular}\end{center}

\end{table}

つまり、以下のようにTexで表示される

スクリーンショット 2016-03-06 21.06.32.png

おわりに

  • 実際は、これのmodel1 〜 model6 の行をコピペして貼り付けてる
  • latex関数でもっとできるんだろうけど、使い方がいまいちわからない。。(ドキュメント読めというのは置いておいて)楽したいので一旦これで。
  • みんなはどのようにRでの数値結果(data.frame)をTexに落とし込んでいるのかなー?

参考

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3