我正在尝试使用 xtable 包在 R 中创建打印质量的半矩阵。我可以毫无问题地创建完整的对称矩阵,但是当我只提取下三角矩阵时,出现如下所示的错误。< /p>
library(Matrix)
datamat1<-tril(data1) #extract lower triangle
library(xtable)
options(xtable.floating = FALSE)
options(xtable.timestamp = "")
xtable(datamat1, digits = 3)
我得到的错误是:“没有适用于 'xtable' 的方法应用于类 "c('dtrMatrix', 'ddenseMatrix', 'triangularMatrix', 'dMatrix', 'denseMatrix', 'Matrix' , 'xMatrix', 'mMatrix', 'Mnumeric', 'replValueSp')"
我知道将矩阵转换为半矩阵也会将其类转换为 dtrMatrix 但必须有某种方法以可发布的质量形式导出下三角矩阵。我也尝试过使用 'zoo' 包,但没有任何运气。这是怎么做到的。
答案 0 :(得分:1)
也许保留原始矩阵并将上三角设置为缺失。然后,您仍将拥有一个 matrix
可以处理的常规 xtable
对象。下面的代码还显示了除了用于打印的 xtable
之外的其他几个选项。 (如果您需要 dtrMatrix
类对象进行进一步处理,您当然可以将其与下面创建的用于打印的对象分开创建。)
---
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)
```