簡體   English   中英

在R中,如何將稀疏矩陣寫入文件?

[英]In R how do you write a sparse matrix to a file?

我有一個稀疏矩陣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')

multinomial編輯 ,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')))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM