我想使用稀疏矩阵进行分析。稀疏矩阵中的每个单元包括来自集合{0,1,NA}的一个值。这里的NA表示缺失值。
例如,我可以使用以下代码创建稀疏矩阵:
library(Matrix);
toy <- Matrix(c(0,1,NA), nrow=3, ncol=3, sparse = TRUE)
我得到以下输出:
. . .
1 1 1
NA NA NA
是否可以使用矩阵函数创建一个函数,其中矩阵的数据点“省略”是NA值而不是0?我还可以使用其他功能吗?
因此,从我的例子中,我想要的输出是:
0 0 0
1 1 1
. . .
我已经探索了帮助页面和网站,但我还没有找到答案。我相信我需要设置'replValue'。
答案 0 :(得分:2)
实际上有两个单独的问题。第一个是如何显示零。通过查找调度后使用的确切方法很容易解决:
Matrix::printSpMatrix(toy, zero.print="0")
[1,] 0 0 0
[2,] 1 1 1
[3,] NA NA NA
第二个问题是NA
输出是否可以用其他字符抑制。嗯,这不是直接可能的:没有合适的参数。
但是,修改源始终是一个选项。注意:这是一个黑客攻击,可能导致不可预见的后果!
toy_print <- function (x, digits = NULL, maxp = getOption("max.print"), cld = getClassDef(class(x)),
zero.print = ".", col.names, note.dropping.colnames = TRUE,
col.trailer = "", align = c("fancy", "right"))
{
stopifnot(extends(cld, "sparseMatrix"))
x.orig <- x
cx <- formatSpMatrix(x, digits = digits, maxp = maxp, cld = cld,
zero.print = zero.print, col.names = col.names, note.dropping.colnames = note.dropping.colnames,
align = align)
if (col.trailer != "")
cx <- cbind(cx, col.trailer, deparse.level = 0)
# here's the NA hack
cx[cx=="NA"] <- "."
print(cx, quote = FALSE, right = TRUE, max = maxp)
invisible(x.orig)
}
toy_print(toy, zero.print="0")
[1,] 0 0 0
[2,] 1 1 1
[3,] . . .