私は、より柔軟で、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」のようなものを渡したいが、余分な行を取得したくない場合に使用します。