我最终编写了一些 hacky R 代码(请注意,它仅适用于具有 sed、wc 和 awk 可用的系统),它更灵活,并且在 memisc 'mtable' 函数中运行良好,这是我生成 LaTeX 表的首选方式。基本上,您将表写入文本文件,然后使用 (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 的双列间距创建了一个有效的 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" 的东西并且不想得到额外的行。