更改小数点会使观星者在数字之间留出多余的空格

Mar*_*ius 4 latex r sweave knitr stargazer

我正在使用该库stargazerlatex(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 = ",")
@
Run Code Online (Sandbox Code Playgroud)

表2总是显示逗号和小数点后第一位之间的多余空格。表3显示了良好的结果

CL.*_*CL. 5

检查生成的TEX时,很明显stargazer在逗号后不添加任何空格。问题出在其他地方:

这个问题的根源在于,,默认情况下,LaTeX无法识别为十进制分隔符。因此,在数学模式下,LaTeX在每个之后添加一个空格,在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}
Run Code Online (Sandbox Code Playgroud)

icomma输出


仍然存在一个问题:为什么问题3在表3中不可见?这是因为表中stargazer使用的数学标记不一致。表2中的第二个单元格包含,$$-$0,326$而表3的第2行最后一行包含$-$0,006。在第一种情况下,数字本身处于数学模式,导致上述行为。(并且不幸的-是,该字符处于文本模式,导致排版不佳。)在第二种情况下,该数字处于文本模式,其中未添加任何多余的空间。

为了克服格式错误的减号的问题,我建议对简单(非汇总)表使用xtable代替stargazer。结合将列设置为数学模式的自定义列类型,结果为:

使用icomma和xtable输出

\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}
Run Code Online (Sandbox Code Playgroud)