Вам нужно сделать две вещи:
- Измените шаблон регулярных выражений для поиска отрицательных чисел. Шаблон из этого другого вопроса только находит отрицательные числа, если они больше -10, и только если они имеют десятичную точку. Мы сделаем это более общим.
- Используйте
capture.output(print(xtable(testMatrix)))
вместо capture.output(xtable(testMatrix))
. Тогда вы можете использовать функциональность print.xtable()
.
Обратите внимание:
library(xtable)
set.seed(123)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
xt <- capture.output(print(xtable(testMatrix))) # Notice use of print()
negative_number_pattern <- "(\\s|^)(-\\d+\\.*\\d*)" # Notice changed pattern
cat(gsub(negative_number_pattern, "\\1\\\\textcolor{red}{\\2}", xt), sep="\n")
% latex table generated in R 3.6.0 by xtable 1.8-4 package
% Mon May 13 08:02:53 2019
\begin{table}[ht]
\centering
\begin{tabular}{rrr}
\hline
& 1 & 2 \\
\hline
1 & 4 & \textcolor{red}{-9} \\
2 & 8 & \textcolor{red}{-5} \\
3 & 3 & 0 \\
4 & \textcolor{red}{-8} & \textcolor{red}{-6} \\
5 & \textcolor{red}{-1} & \textcolor{red}{-7} \\
\hline
\end{tabular}
\end{table}
xt <- capture.output(print(xtable(testMatrix), include.rownames = FALSE))
cat(gsub(negative_number_pattern, "\\1\\\\textcolor{red}{\\2}", xt), sep="\n")
% latex table generated in R 3.6.0 by xtable 1.8-4 package
% Mon May 13 08:02:53 2019
\begin{table}[ht]
\centering
\begin{tabular}{rr}
\hline
1 & 2 \\
\hline
4 & \textcolor{red}{-9} \\
8 & \textcolor{red}{-5} \\
3 & 0 \\
\textcolor{red}{-8} & \textcolor{red}{-6} \\
\textcolor{red}{-1} & \textcolor{red}{-7} \\
\hline
\end{tabular}
\end{table}
Как видите, с помощью print()
мы можем использовать параметры, которые вы ищете (здесь я продемонстрирую, изменив include.rownames
на FALSE
).
Обновление: «Экспорт»
Если вы хотите напечатать таблицу в filename.tex
непосредственно из команды R, вы можете использовать аргумент cat()
file
. От help("cat")
:
Использование
cat (..., file = "", sep = "", fill = FALSE, label = NULL,
append = FALSE)
Аргументы
... R объектов (см. «Подробности» для типов разрешенных объектов).
file Соединение или строка символов с именем файла для печати. Если "" (по умолчанию), cat печатает на стандартное выходное соединение, консоль, если не перенаправлена на приемник. Если это «| cmd», вывод передается по команде, заданной «cmd», путем открытия соединения канала.
Итак, это:
library(xtable)
set.seed(123)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
xt <- capture.output(print(xtable(testMatrix))) # Notice use of print()
negative_number_pattern <- "(\\s|^)(-\\d+\\.*\\d*)" # Notice changed pattern
cat(gsub(negative_number_pattern, "\\1\\\\textcolor{red}{\\2}", xt), sep="\n",
file = "filename.tex")
приводит к следующему содержанию в filename.tex
:
% latex table generated in R 3.6.0 by xtable 1.8-4 package
% Mon May 13 08:53:44 2019
\begin{table}[ht]
\centering
\begin{tabular}{rrr}
\hline
& 1 & 2 \\
\hline
1 & 4 & \textcolor{red}{-9} \\
2 & 8 & \textcolor{red}{-5} \\
3 & 3 & 0 \\
4 & \textcolor{red}{-8} & \textcolor{red}{-6} \\
5 & \textcolor{red}{-1} & \textcolor{red}{-7} \\
\hline
\end{tabular}
\end{table}