Rmarkdown(RStudio)中的KableExtra输出表出现问题:paste0函数

时间:2018-11-04 10:48:08

标签: r rstudio knitr

这是我的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。

第二,为什么我不能将重复的符号作为行?例如,如何将第二行和第三行的行名设置为Beta?

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您的序言搞砸了。您需要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

对我来说,这看起来差不多(最后一行的对齐方式除外)。

之所以不能重复行名,是因为它们用于标识行。如果您有两行名为beta的行,dt["beta", ]会给出什么?如果要重复值,只需添加一个额外的列即可。