从'R'中的矩阵写出LaTex代码

yfwxisqw  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(226)

我有下面的矩阵x

> dput(x)
structure(c(6, 4, 3, 1, 6, 2, 5, 3, 5, 3, 6, 0, 6, 0, 5, 5), dim = c(4L, 
4L))

> x
     [,1] [,2] [,3] [,4]
[1,]    6    6    5    6
[2,]    4    2    3    0
[3,]    3    5    6    5
[4,]    1    3    0    5

该矩阵可以用LaTex表示,代码为

\begin{equation*}
  \left(
     \begin{array}{cccc}
       6 & 6 & 5 & 6 \\
       4 & 2 & 3 & 0 \\
       3 & 5 & 6 & 5 \\
       1 & 3 & 0 & 5 \\
     \end{array}
   \right)\, .
\end{equation*}

为了用LaTex表示矩阵x,我复制了前面LaTex指令中的每一个数字。相反,我想知道是否有一个包或函数,从R矩阵开始,允许用LaTex代码表示它。

8cdiaqws

8cdiaqws1#

@Quinten指出了xtable包,knitr里面也有kable()函数,如果你是用R Markdown或者Swave风格的knitr开发文档的话非常方便。
编辑:
我原来的建议是不正确的我没有意识到LaTeX中的pmatrix环境不使用对齐字符。
我不认为有任何方法可以告诉knitr::kable()不要包含它们,但是我可以编写一个小函数,生成与您类似的输出:

pmatrix <- function(x) {
  cat(c("\\begin{equation*}\n",
    "\\left(",
    knitr::kable(x, format = "latex", 
                 tabular = "array",
                 vline = "",
                 align = "c",
                 linesep = "",
                 toprule = NULL,
                 bottomrule = NULL),
    "\n\\right)\\, .\n",
    "\\end{equation*}\n"))
}

x <- structure(c(6, 4, 3, 1, 6, 2, 5, 3, 5, 3, 6, 0, 6, 0, 5, 5), dim = c(4L, 
                                                                          4L))

pmatrix(x)
#> \begin{equation*}
#>  \left( 
#> \begin{array}{cccc}
#> 6 & 6 & 5 & 6\\
#> 4 & 2 & 3 & 0\\
#> 3 & 5 & 6 & 5\\
#> 1 & 3 & 0 & 5\\
#> \end{array} 
#> \right)\, .
#>  \end{equation*}

创建于2023年2月12日,使用reprex v2.0.2
如果您最终使用R Markdown或类似Swave的输入,您可以使用"results ='asis '"将对该函数的调用放入块中,以便将LaTeX代码嵌入到文档中。

kxkpmulp

kxkpmulp2#

您可以将xtable函数与tabular.environment="bmatrix"打印选项一起使用,如下所示:

library(xtable)
x<-xtable(x)
print(x, tabular.environment="bmatrix")
#> % latex table generated in R 4.2.2 by xtable 1.8-4 package
#> % Sun Feb 12 18:29:03 2023
#> \begin{table}[ht]
#> \centering
#> \begin{bmatrix}{rrrrr}
#>   \hline
#>  & 1 & 2 & 3 & 4 \\ 
#>   \hline
#> 1 & 6.00 & 6.00 & 5.00 & 6.00 \\ 
#>   2 & 4.00 & 2.00 & 3.00 & 0.00 \\ 
#>   3 & 3.00 & 5.00 & 6.00 & 5.00 \\ 
#>   4 & 1.00 & 3.00 & 0.00 & 5.00 \\ 
#>    \hline
#> \end{bmatrix}
#> \end{table}

创建于2023年2月12日,使用reprex v2.0.2

相关问题