При осмотре сгенерированного 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}

Остается один вопрос: Почему эта проблема не видна в таблице 3 от вопроса? Это связано с тем, что stargazer
использует несогласованную математическую разметку в таблицах. Вторая ячейка в таблице 2 содержит $$-$0,326$
, тогда как строка 2, последний столбец таблицы 3 содержит $-$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}