3

学術論文の回帰結果の表には、推定されたモデルのいくつかの特徴を説明する行があるのが一般的な方法です。たとえば、「モデルに個別の固定効果が含まれている」という行名を付けると、関連する各セルに必要に応じて「はい/いいえ」が表示されます。

私の質問は、Rを使用してLaTeXテーブルを作成するための多くのツール(Rでラテックステーブルを作成するためのツールを参照)のいずれかで、行などのテーブル生成関数を渡すことができるかどうかです。これをより具体的にするために、私は想像しています次のようなパラメータを持つ:

model.info.row <- list(name = "Fixed effects", values = c("Y", "N", "Y"))

memisc mtableとtoLaTeXのドキュメントを読みましたが、これが可能なと思われるものは何も見つかりませんでした---他のパッケージ/アプローチについてはわかりませんが、これは非常に一般的なユースケースのようで、何らかの方法があると思いますこれ。

4

2 に答える 2

5

その新しい行を、渡したいテーブルに直接追加しようとするかもしれませんxtable。本当に下手な例:

  1. モデルをいくつか用意しましょう。

    m <- lm(mtcars$hp ~ mtcars$wt)
    
  2. 返されるテーブルxtableと他のヘルパーをつかみます:

    df <- as.data.frame(summary(m)$coefficient)
    
  3. いくつかの値を含む新しい行を追加します。

    df[3, ] <- c(sample(c('foo', 'bar'), 4, replace = TRUE))
    
  4. カスタム行の行名を更新します。

    rownames(df)[3] <- 'FOOBAR'
    
  5. 結果を確認してください:

    > df
                         Estimate       Std. Error             t value            Pr(>|t|)
    (Intercept) -1.82092177119464 32.3246158121787 -0.0563323561763288     0.95545056134944
    mtcars$wt    46.1600502824445 9.62530003926982    4.79569988406785 4.14582744107531e-05
    FOOBAR                    bar              foo                 bar                  bar
    
  6. または単に電話してxtableください:

    > xtable(df)
    % latex table generated in R 2.15.0 by xtable 1.7-0 package
    % Tue Jun 12 01:39:46 2012
    \begin{table}[ht]
    \begin{center}
    \begin{tabular}{rllll}
      \hline
     & Estimate & Std. Error & t value & Pr($>$$|$t$|$) \\ 
      \hline
    (Intercept) & -1.82092177119464 & 32.3246158121787 & -0.0563323561763288 & 0.95545056134944 \\ 
      mtcars\$wt & 46.1600502824445 & 9.62530003926982 & 4.79569988406785 & 4.14582744107531e-05 \\ 
      FOOBAR & bar & foo & bar & bar \\ 
       \hline
    \end{tabular}
    \end{center}
    \end{table}
    
于 2012-06-11T23:40:37.573 に答える
0

私は、より柔軟で、LaTeXテーブルを生成するための私の好ましい方法であるmemiscの「mtable」関数でうまく機能するハッキーなRコード(sed、wc、awkが利用可能なシステムでのみ機能することに注意してください)を書くことになりました。基本的には、テーブルをテキストファイルに書き込んでから、(1)挿入するファイルの行番号(2)挿入する行、および(3)ファイルの名前を使用してこの関数を呼び出します。に挿入します(この関数は既存のファイルを上書きすることに注意してください)。コードは次のとおりです。

insert.note <-function(linenumber, line, file){
  num.lines <- as.numeric(system(paste("wc", file, "| awk '{print $1}'"), intern=TRUE))
  tmp <- tempfile()
  system(paste("head -n ", linenumber, file, "> ", tmp))
  sink(tmp, append=TRUE)
   cat(line)
   sink()
  system(paste("tail -n", num.lines - linenumber, file, ">>", tmp))
  system(paste("mv", tmp, file))
}

ヘルパー関数として、このコードはmtableのdoubleと列の間隔を使用してLaTeXの有効な行を作成します。

 create.note <- function(l, include.row.end = TRUE){
  n <- length(l)
  s <- ""
  i <- 1
  for(note in l){
    if(i < n){
      cap <- "&&"
    } else {
      if(include.row.end){
        cap <- "\\\\ \n "
      } else {
          cap <- " \n"
      }
    }
    s <- paste(s, note, cap)
    i <- i + 1
  }
  s
}

include.row.endパラメーターは、「\ midrule」のようなものを渡したいが、余分な行を取得したくない場合に使用します。

于 2012-08-05T22:01:02.277 に答える