2013-07-10 2 views
3

У меня есть разреженная матрица A, сгенерированная как выход функции glmnet. При печати матрицы А, он показывает все записи и на вершине он читает -В R как вы пишете разреженную матрицу в файл?

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 

Как выборки значения в этой разреженной матрице и записать в файл?

Я столкнулся с этой проблемой, когда выполняю многоминимальную регрессию (family = "multinomial") в функции glmnet. Однако это отлично работает, когда я выполняю регрессию биномаля (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"' 

ответ

5

Вы можете использовать writeMM и readMM читать и писать разреженную матрицу, так что нет необходимости принуждать его к матрице.

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

EDIT в 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'))) 
+0

Я получаю эту ошибку ->> writeMM (подходят $ A, файл = 'test.txt') ошибки в (функции (классы, FDEF, mtable): не смог найти наследственное метод для функции 'writeMM' для подписи '' list '' – tan

+0

@tan см. мое редактирование. Я добавляю многочленный пример. – agstudy

+0

Спасибо @agstudy. Удивительно !! Это работает. Но прошу прощения за мои ограниченные знания в Р. Я не уверен, что каждый из этих файлов обозначает? Как интерпретировать вывод? Что означают разные коэффициенты? Моя конечная цель - увидеть различные бета-коэффициенты для каждой из прогностических переменных в модели. Его простота, чтобы получить это с «биномиальной» регрессией. С «многочленной» регрессией, сейчас я получаю 3 файла, соответствующие трем коэффициенты и каждая имеют разную длину. Как я их интерпретирую? – tan

Смежные вопросы