Проблема с таблицами вывода KableExtra в Rmarkdown (RStudio): функция paste0 - PullRequest
0 голосов
/ 04 ноября 2018

Это мой воспроизводимый пример Rsweave:

\documentclass{article}
\usepackage[utf8]{inputenc}

\DeclareUnicodeCharacter{B5}{$\alpha$}
\DeclareUnicodeCharacter{B5}{$\tau$}
\DeclareUnicodeCharacter{B5}{$\sigma$}
\DeclareUnicodeCharacter{B5}{$\beta$}
\DeclareUnicodeCharacter{B5}{$\gamma$}
\DeclareUnicodeCharacter{B5}{$\mu$}
\DeclareUnicodeCharacter{B5}{$\Delta$}

\begin{document}

This is a table

    <<summarymatrix,echo=FALSE>>=
    library(knitr)
    library(kableExtra)
alpha='\u03b1'; tau='\u03c4'; sigma='\u03c3'; beta='\U03B2'; gamma='\u03b3'; mu='\u03BC'; Delta='\u0394'

    dt <- mtcars[1:5, 1:3]
    colnames(dt)=c('Sample1','Sample2','Sample3')
    rownames(dt)=c(paste0(mu),paste0(tau),paste0(sigma),paste0(beta),paste0(Delta))


    dt
    @

    \end{document}

Есть две проблемы:

Сначала имя Delta-строки размещается в неправильной позиции в моей выходной таблице. Должен быть в 5-м ряду. И первое имя строки должно быть mu.

Во-вторых, почему я не могу иметь повторяющиеся символы в виде строк? Например, как я могу поставить второе и третье имена строк в качестве бета-версии?

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 04 ноября 2018

Ваша преамбула испорчена. Вам нужен пакет inputenc, чтобы получить \DeclareUnicodeCharacter, и вы не должны объявлять B5 как 7 разных вещей.

Вот ваш документ с исправленными вещами:

\documentclass{article}
\usepackage[utf8]{inputenc}


\DeclareUnicodeCharacter{3B1}{$\alpha$}
\DeclareUnicodeCharacter{3C4}{$\tau$}
\DeclareUnicodeCharacter{3C3}{$\sigma$}
\DeclareUnicodeCharacter{3B2}{$\beta$}
\DeclareUnicodeCharacter{3B3}{$\gamma$}
\DeclareUnicodeCharacter{3BC}{$\mu$}
\DeclareUnicodeCharacter{394}{$\Delta$}

\begin{document}
\SweaveOpts{concordance=TRUE}

This is a table

<<summarymatrix,echo=FALSE>>=
library(knitr)
library(kableExtra)
alpha='\u03b1'; tau='\u03c4'; sigma='\u03c3'; beta='\U03B2'; gamma='\u03b3'; mu='\u03BC'; Delta='\u0394'

dt <- mtcars[1:5, 1:3]
colnames(dt)=c('Sample1','Sample2','Sample3')
rownames(dt)=c(paste0(mu),paste0(tau),paste0(sigma),paste0(beta),paste0(Delta))


dt
@

\end{document}

А вот и вывод:

pdf output

Это выглядит более или менее хорошо для меня (за исключением выравнивания в последней строке).

Причина, по которой вы не можете повторять имена строк, заключается в том, что они используются для идентификации строк. Если бы у вас было две строки с именем бета, что бы дал dt["beta", ]? Если вам нужны повторяющиеся значения, просто добавьте дополнительный столбец.

...