我正在使用库stargazer
在latex
(Rstudio / knitr / Sweave)中生成表。
我需要将小数点分隔符更改为逗号(“,”),并且stargazer()
函数通常可以正常工作。仅当传递选项summary = false
时,结果之间才在数字之间留有多余的空格。
有谁知道如何克服这个问题?
<<results='asis'>>=
library(stargazer)
set.seed(0)
x = matrix(rnorm(3),nrow = 1)
y = matrix(rnorm(9),nrow = 3)
stargazer(x,summary=FALSE)
stargazer(x,summary=FALSE,decimal.mark = ",")
stargazer(y,summary=TRUE,decimal.mark = ",")
@
Table 2 always shows a extra space between the comma and the first decimal place. Table 3 shows good results
最佳答案
检查生成的TEX时,很明显stargazer
在逗号后不添加任何空格。问题出在其他地方:
此问题的根源是LaTeX默认不将,
识别为十进制分隔符。因此,在数学模式下,LaTeX在每个,
之后添加一个空格。 here on TEX.SE描述了此问题,解决方案是包括icomma
包。
\documentclass{article}
\usepackage{icomma}
\begin{document}
<<results='asis', echo=FALSE, message = FALSE>>=
library(stargazer)
set.seed(0)
x = matrix(rnorm(3),nrow = 1)
y = matrix(rnorm(9),nrow = 3)
stargazer(x,summary=FALSE)
stargazer(x,summary=FALSE,decimal.mark = ",")
stargazer(y,summary=TRUE,decimal.mark = ",")
@
\end{document}
仍然存在一个问题:为什么从表3中看不到该问题?这是因为
stargazer
在表中使用不一致的数学标记。表2中的第二个单元格包含$$-$0,326$
,而表3的第二行最后一列包含$-$0,006
。在第一种情况下,数字本身处于数学模式,导致上述行为。 (而且,不幸的是,-
处于文本模式,导致排版不佳。)在第二种情况下,数字处于文本模式,其中未添加任何多余的空间。为了克服格式错误的减号的问题,对于简单(非汇总)表,建议使用
xtable
而不是stargazer
。结合将列设置为数学模式的自定义列类型,结果为:\documentclass{article}
\usepackage{icomma}
\usepackage{tabularx}
\newcolumntype{R}{>{$}r<{$}} % like an "r" column but in math mode
\begin{document}
<<results='asis', echo=FALSE>>=
library(xtable)
set.seed(0)
x = matrix(rnorm(3),nrow = 1)
print.xtable(
xtable(x, caption = "", align = rep("R", 4)),
include.rownames = FALSE,
include.colnames = FALSE,
format.args = list(decimal.mark = ","),
caption.placement = "top")
@
\end{document}