首页 > 解决方案 > 在稀疏矩阵中将空白转换为 NA

问题描述

我有一个稀疏矩阵,我正在读入 R 并使用以下代码转换为矩阵

gt <-readMM("matrix.mtx")
gt_0 <- as.matrix(gt)

但是,gt对象内的空白字段在调用期间被转换为 0 gt_0 <- as.matrix(gt)

问题是我的矩阵的实际值是二进制 (0|1),所以用 0 填充会使下游分析变得不可能。

如果可能的话,我希望用 NA 填充空白而不是 0

非常感谢您的任何建议

标签: rmatrixsparse-matrix

解决方案


0将s转换为NAs,只需将其替换dgTMatrixmatrix

# Sample data
library(Matrix)
gt <- Matrix(0+1:28, nrow = 4)
gt[-3,c(2,4:5,7)] <- gt[ 3, 1:4] <- gt[1:3, 6] <- 0
gt <- as(m, "dgTMatrix")

# Convert to matrix and replace 0s with NAs
gt_0 <- as.matrix(gt)
gt_0[gt_0 == 0] <- NA
gt_0
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,]    1   NA    9   NA   NA   NA   NA
#[2,]    2   NA   10   NA   NA   NA   NA
#[3,]   NA   NA   NA   NA   19   NA   27
#[4,]    4   NA   12   NA   NA   24   NA

推荐阅读