有没有办法在 R 中创建 LaTex 半矩阵?

Is there a way to create a LaTex half matrix in R?

我正在尝试使用 xtable 包在 R 中创建打印质量的半矩阵。我可以毫无问题地创建完整的对称矩阵,但是当我只提取下三角矩阵时,出现如下所示的错误.

library(Matrix)
datamat1<-tril(data1) #extract lower triangle
library(xtable)
options(xtable.floating = FALSE)
options(xtable.timestamp = "")
xtable(datamat1, digits = 3)

我得到的错误是:“没有适用于 'xtable' 的方法应用于 class 的对象”c('dtrMatrix', 'ddenseMatrix', 'triangularMatrix', 'dMatrix', 'denseMatrix', 'Matrix', 'xMatrix', 'mMatrix', 'Mnumeric', 'replValueSp')"

我知道将矩阵转换为半矩阵也会将其 class 转换为 dtrMatrix,但必须有一些方法可以以可发布的质量形式导出下三角矩阵。我也尝试过使用 'zoo' 包但没有任何运气。这怎么能做到。

也许保留原始矩阵,只是将上三角设置为缺失。然后你仍然会有一个 matrix 可以处理的常规 matrix 对象。下面的代码还显示了除 xtable 之外的几个用于打印的其他选项。 (如果您需要 dtrMatrix class 对象进行进一步处理,您当然可以将其与下面创建的用于打印的对象分开创建。)

---
title: "My Title"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo=FALSE)
library(tidyverse)
library(knitr)
library(gt)
library(xtable)
options(xtable.floating = FALSE)
options(xtable.comment = FALSE)
options(knitr.kable.NA="")
```

## Using `xtable`

```{r,  results="asis"}
set.seed(3)
m = matrix(1:16 + rnorm(16), nrow=4)
m[upper.tri(m)] = NA_real_

xtable(m, digits=3)
```

## Using `knitr::kable`

```{r}
colnames(m) = 1:ncol(m)
rownames(m) = 1:nrow(m)

kable(m, row.names=TRUE, digits=3)
```

## Using the `gt` package

```{r}
gt(as_tibble(m),
   rownames_to_stub=TRUE,
   digits) %>% 
  fmt_missing(columns=everything(), 
              missing_text="") %>% 
  fmt_number(columns=everything(), 
             decimals=3)
```