将稀疏矩阵中的所有 NaN 元素设置为零

Set all NaN elements in sparse matrix to zero

R 中的 Matlab 语句 X(isnan(X))=0 等价于什么?注意 X 在 R 中属于 matrix.csr 类型。(这来自 pkg:SparseM。)

R中的函数其实是is.na.

然后你就可以像在 Matlab 中一样使用逻辑索引(只是要小心使用方括号):

X[is.na(X)]=0

您确定要使用 matrix.csr class 吗?它来自 SparseM 包,据我所知,至少从包文档来看,没有 is.na<-is.na[ 方法。 Matrix-package 确实记录了 is.na-methods:

> library(Matrix);M <- Matrix(1:6, nrow=4, ncol=3,
+        dimnames = list(c("a", "b", "c", "d"), c("A", "B", "C")))
> stopifnot(all(!is.na(M)))
> M[2:3,2] <- NA
> M[is.na(M)] <- 0
> M
4 x 3 Matrix of class "dgeMatrix"
  A B C
a 1 5 3
b 2 0 4
c 3 0 5
d 4 2 6

Matrix 软件包现在是推荐的软件包之一。我的印象是 SparseM 没有被广泛使用。