我如何获得xtable(虽然我也有pander.table的这个问题)将希腊字母分配给打印函数中的数据框的列,而不需要渲染表,然后手动输入Latex作为希腊字母?
以下是可重复示例的数据:
#data in
chiSq <- 1600
df <- 850
p <- 0.95
CFI <- 0.95
TLI <- 0.95
RMSEA <- 0.04
LOWRMSEA <- 0.03
HIGHRMSEA <- 0.04
我通常有一些看起来像这样的数据框。
fit.stat <- data.frame(chiSq, df, p, CFI, TLI, RMSEA, LOWRMSEA, HIGHRMSEA)
以下是我在使用xtable创建数据框表时经常遇到的一些具体问题:
$x^2$
将呈现相应的符号。 我发现这样做的唯一方法是首先使用此命令打印表
library(xtable)
print(xtable(fit.stat, caption = "Model Fit Information for CFA"),
caption.placement="top",
type = "latex")
产生这个:
\begin{table}[ht]
\centering
\caption{Model Fit Information for CFA}
\begin{tabular}{rrrrrrrrr}
\hline
& chiSq & df & p & CFI & TLI & RMSEA & LOWRMSEA & HIGHRMSEA \\
\hline
1 & 1600.00 & 850.00 & 0.95 & 0.95 & 0.95 & 0.04 & 0.03 & 0.04 \\
\hline
\end{tabular}
\end{table}
然而,我需要手动编辑表来创建它:
\begin{table}[ht]
\centering
\caption{Model Fit Information for CFA}
\begin{tabular}{rrrrrrrrrrrr}
\hline
& $x^2$ & {\it df} & {\it p} & CFI & TLI & RMSEA\\
\hline
&1600.00 & 850.00 & 0.00 & 0.95 & 0.95 & 0.04 (0.03 - 0.04) \\
\hline
\end{tabular}
\end{table}
我希望能够动态地执行此操作而无需手动编辑表格,以便我可以将其作为代码块包含在markdown doc中。 感谢。
答案 0 :(得分:0)
至于合并RMSEA&amp; LOWRMSEA&amp; HIGHRMSEA值,可能最好在data.frame中作为粘贴。例如
fit.stat <- data.frame(chiSq, df, p, CFI, TLI,
RMSEA = paste0(RMSEA , " (",LOWRMSEA," - ", HIGHRMSEA,")"))
然后,对于列名称,您可以通过指定自定义print.xtable
函数来覆盖sanitize
的清理功能。因为我确定你已经知道了,通常所有的特别的&#34; LaTeX字符被剥离或转义,以免干扰布局。但是,在这里我们可以创建一个替代我们的函数。首先,我们定义一个函数
formatcolheads<-function(x) {
sanitize<-get("sanitize", parent.frame())
x<-sanitize(x)
x<-gsub("chiSq","$x^2$",x)
x<-gsub("df","{\\\\it df}",x)
x<-gsub("p","{\\\\it p}",x)
x
}
请注意,我做了一些工作来获取默认的sanitize
函数并在列上运行它以确保没有任何问题。然后我去替换你想要改变的值。请注意,我们必须为&#34;它填充双重转义斜杠。但是我们使用像这样的函数
print(xtable(fit.stat, caption = "Model Fit Information for CFA"),
caption.placement="top", sanitize.colnames.function = formatcolheads,
type = "latex")
并产生
\begin{table}[ht]
\centering
\caption{Model Fit Information for CFA}
\begin{tabular}{rrrrrrl}
\hline
& $x^2$ & {\it df} & {\it p} & CFI & TLI & RMSEA \\
\hline
1 & 1600.00 & 850.00 & 0.95 & 0.95 & 0.95 & 0.04 (0.03 - 0.04) \\
\hline
\end{tabular}
\end{table}
似乎是您想要的输出。