Обработка обратной косой черты Latex в xtable

У меня есть таблица, которая включает в себя следующий столбец:

 mytable <- data.frame(beta_0 = c(1,2,3)

Что я хочу сделать, так это вывести таблицу с заголовком столбца в латексной разметке, например. $\beta_0$

Однако я не могу понять, как вывести "$\beta_0$" с помощью print.xtable:

colnames(mytable) <- "$\beta_0$"
library(xtable)
print(xtable(mytable), include.rownames = F)

возвращает заголовок столбца

\eta\_0\$

вместо

$\beta_0$

Я предполагаю, что ответом является аргумент "sanitize.colnames.function" для print.xtable, но мне не очевидно, как его использовать, а ?print.xtable не дает примеров.

В частности, я хотел бы вывести латексную таблицу, например:

\begin{table}[ht]
 \begin{center}
  \begin{tabular}{r}
    \hline
    $\beta_0$ \\ 
    \hline
    1.00 \\ 
    2.00 \\ 
    3.00 \\ 
    \hline
  \end{tabular}
 \end{center}
\end{table}

person David LeBauer    schedule 04.01.2012    source источник
comment
См. также: stackoverflow.com/ вопросы/32865384/   -  person landroni    schedule 30.09.2015


Ответы (2)


Две проблемы здесь; во-первых, вам нужна двойная обратная косая черта, иначе она будет рассматриваться как управляющая последовательность. Во-вторых, по умолчанию xtable очищает текст, чтобы он не нарушал LaTeX. Используйте один из параметров sanitize. для управления этим; чтобы не проводить дезинфекцию, передайте ей функцию идентификации.

colnames(mytable) <- "$\\beta_0$"
print(xtable(mytable), include.rownames = F, sanitize.colnames.function = identity)
person Aaron left Stack Overflow    schedule 04.01.2012
comment
Я пробовал использовать двойную обратную косую черту, но sanitize.colnames.function меня озадачил. Есть ли список возможных значений аргументов sanitize*? - person David LeBauer; 04.01.2012
comment
@David Нет списка возможных значений для аргументов sanitize. Как ясно сказано в документах: it should be a function taking a character vector and returning one, and will be used for the sanitization instead of the default internal function. Аарон просто передал identity функцию, которая ничего не делает. - person joran; 04.01.2012
comment
Он принимает любую подходящую функцию. identity — это базовая функция, которая ничего не делает. - person Aaron left Stack Overflow; 04.01.2012
comment
понял: identity <- function(x)x. @joran Я видел эту часть, мне было любопытно узнать, есть ли определенные функции, которые особенно полезны при синтаксическом анализе и другой латексной разметке. Но identity решил мою текущую проблему. - person David LeBauer; 05.01.2012
comment
Я не знаю каких-либо других конкретных функций; когда мне нужно было что-то более сложное, я начинал с стандартного в xtable и модифицировал его в соответствии со своими потребностями. - person Aaron left Stack Overflow; 05.01.2012
comment
@David, вы всегда можете найти в источнике список аргументов sanitize: это: sanitize.rownames.function, sanitize.colnames.function, sanitize.text.function, и их можно установить с помощью options вместо аргументов для печати, например. options(xtable.sanitize.rownames.function=identity) - person cboettig; 13.05.2014

вот что помогло мне:

mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4)
rownames(mat) <- "$y_{t-1}$"
colnames(mat) <- c("$R^2$", "$\\bar{x}$", "F-stat", "S.E.E", "DW")
mat <- xtable(mat)
print(mat, sanitize.text.function = function(x){x})

Таким образом, вы избежите проблемы с обратной косой чертой в тексте таблицы.

person Anne    schedule 19.10.2020