更改小数点会使 stargazer 在数字之间添加一个额外的 space
Changing the decimal mark makes stargazer to put an extra space between numbers
我正在使用库 stargazer
在 latex
(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 = ",")
@
当检查生成的 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}
我正在使用库 stargazer
在 latex
(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 = ",")
@
当检查生成的 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}