gpt4 book ai didi

r - 在 R 中如何将稀疏矩阵写入文件?

转载 作者:行者123 更新时间:2023-12-03 02:35:58 25 4
gpt4 key购买 nike

我有一个稀疏矩阵 A,作为 glmnet 函数的输出生成。当我打印矩阵 A 时,它显示所有条目,并在顶部显示 -

    1897 x 100 sparse Matrix of class "dgCMatrix"
[[ suppressing 32 column names 's0', 's1', 's2' ... ]]

但是,当我尝试查看矩阵的维度时,它显示 NULL:

> dim(A)
NULL

因此,如果我使用 as.matrix 将其转换为常规矩阵并写入文件,则会出现错误:

as.matrix(fit$A[,1])
Error in as.matrix(fit$A[, 1]) :
error in evaluating the argument 'x' in selecting a method for function 'as.matrix': Error in fit$A[, 1] : incorrect number of dimensions

如何获取这个稀疏矩阵中的值并写入文件?

我在glmnet函数中进行多项回归(family =“multinomial”)时遇到这个问题。然而,当我进行 binomail 回归(family =“binomial”)时,这工作得很好。

另外,我尝试过 writeMM 函数。这也不起作用:

> library('Matrix')
> writeMM(fit$A,file='test.txt')
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function 'writeMM' for signature '"list"'

最佳答案

您可以使用writeMMreadMM来读取和写入稀疏矩阵,因此无需将其强制转换为矩阵。

writeMM(fit$A,file='test.txt')
readMM(file='test.txt')

编辑多项式中,glmnet 返回系数列表。所以你需要循环这个列表并写下每个系数。这是一个例子:

library(glmnet)
g4=sample(1:4,100,replace=TRUE)
fit3=glmnet(x,g4,family="multinomial")
lapply(seq_along(fit3$beta),function(x)
writeMM(fit3$beta[[x]],file=paste0('coef.beta',x,'.txt')))

关于r - 在 R 中如何将稀疏矩阵写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574099/

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