我正在使用库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 = ",")
@


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}


r - 更改小数点会使观星者在数字之间留出额外的空格-LMLPHP



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

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

r - 更改小数点会使观星者在数字之间留出额外的空格-LMLPHP

\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}

08-24 14:35