gpt4 book ai didi

r - 如何将稀疏矩阵中的替换值设置为 NA 而不是 0?

转载 作者:行者123 更新时间:2023-12-04 02:19:51 34 4
gpt4 key购买 nike

我想使用稀疏矩阵进行分析。稀疏矩阵中的每个单元包含来自集合 {0,1,NA} 的一个值。这里的NA代表缺失值。

例如,我可以使用下面的代码来创建一个稀疏矩阵:

    library(Matrix); 
toy <- Matrix(c(0,1,NA), nrow=3, ncol=3, sparse = TRUE)

我得到以下输出:

.  .  .
1 1 1
NA NA NA

是否可以使用 Matrix 函数创建一个函数,其中矩阵“遗漏”的数据点是 NA 值而不是 0?还有其他我可以使用的功能吗?

因此,根据我的例子,我想要的输出是:

0 0 0
1 1 1
. . .

我浏览了帮助页面和网站,但没有找到答案。我相信我需要设置“replValue”。

最佳答案

实际上,有两个不同的问题。第一个是如何显示零。通过查找 dispatch 后使用的确切方法很容易解决:

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,] . . .

关于r - 如何将稀疏矩阵中的替换值设置为 NA 而不是 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463106/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com