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

在R中,如何将稀疏矩阵写入文件?,r,matrix,statistics,sparse-matrix,R,Matrix,Statistics,Sparse Matrix,我有一个稀疏矩阵a,作为glmnet函数的输出生成。 当我打印矩阵A时,它会显示所有条目,在顶部它会显示- 1897 x 100 sparse Matrix of class "dgCMatrix" [[ suppressing 32 column names 's0', 's1', 's2' ... ]] 但是,当我尝试查看矩阵的维度时,它显示为空: > dim(A) NULL 因此,如果使用as.matrix将其转换为常规矩阵并写入文件,则会出现错误: as.matr

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

    1897 x 100 sparse Matrix of class "dgCMatrix"
   [[ suppressing 32 column names 's0', 's1', 's2' ... ]]
但是,当我尝试查看矩阵的维度时,它显示为空:

> 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=“多项式”)时遇到了这个问题。但是,当我在进行二项邮件回归(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"'

您可以使用
writeMM
readMM
读取和写入稀疏矩阵,因此无需将其强制为矩阵

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')))

我在(函数(类,fdef,mtable)中遇到此错误->>writeMM(fit$A,file='test.txt')错误:找不到签名“list”的函数“writeMM”的继承方法谢谢@agstudy.Awesome!!这很有效。但是请原谅我在R方面的知识有限。我不确定每个文件都表示了什么?如何解释输出?不同的系数意味着什么?我的最终目的是查看模型中每个预测变量的不同beta系数。使用“b”可以直接得到它“多项式”回归。使用“多项式”回归,现在我得到了三个文件,对应于三个系数,每个文件的长度不同。我如何解释这些?