Mar*_*ius 4 latex r sweave knitr stargazer
我正在使用该库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 = ",")
@
Run Code Online (Sandbox Code Playgroud)
检查生成的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)
仍然存在一个问题:为什么问题3在表3中不可见?这是因为表中stargazer使用的数学标记不一致。表2中的第二个单元格包含,$$-$0,326$而表3的第2行最后一行包含$-$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}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |