更改小数点会使 stargazer 在数字之间添加一个额外的 space

Changing the decimal mark makes stargazer to put an extra space between numbers

我正在使用库 stargazerlatex (Rstudio/knitr/Sweave) 中生成表格。
我需要将小数点分隔符更改为逗号 (",") 并且函数 stargazer() 大多数时候都有效。仅当传递选项 summary = false 时,结果才会在数字之间附加一个额外的 space。
任何人都知道如何克服这个问题?

<<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 没有在逗号后添加任何 space。问题出在其他地方:

这个问题的根源是 LaTeX 默认不识别 , 作为小数点分隔符。因此,在数学模式下,LaTeX 在每个 , 之后添加一个 space。这个问题在here on TEX.SE and the solution is to include the 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}


还有一个问题:为什么问题在 Table 3 中看不到?这是因为 stargazer 在表格中使用了不一致的数学标记。 Table 2 中的第二个单元格包含 $$-[=17=],326$,而 Table 3 的第 2 行最后一列包含 $-[=18=],006。在第一种情况下,数字本身处于数学模式,导致上述行为。 (不幸的是,- 处于文本模式,导致排版错误。)在第二种情况下,数字处于文本模式,没有添加额外的 space。

为了解决减号格式错误的问题,我建议对简单 (non-summary) 表格使用 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}