2014-01-10 6 views
10

У меня возникла проблема с пакетом glmnet в R. Я пытаюсь использовать его в готовом виде, и я получаю следующая проблема:'x' и 'w' должны иметь одинаковую длину - ошибка в weighted.mean.default

test <- glmnet(seq.trans,rsem.trans) 

Ошибка в weighted.mean.default (у, вес): 'х' и 'ш' должны иметь одинаковую длину

Но входы одинаковы размер:

dim(seq.trans) 
# [1] 28 17763 
dim(rsem.trans) 
# [1] 28 17763 

В чем причина этой ошибки?

+11

'y' должен быть вектором, а не матрицей. 'rsem.trans' - ваш' y', и это матрица. –

+0

Yup, это решило мою проблему. – user554481

+0

Он не решил мой. Я пробовал применять 'as.vector (y)', но все равно получаю ту же проблему. Если я применил 'c (y)', я получаю другую ошибку из 'cv.glmnet': * число наблюдений в y (1), не равное числу строк x (42) * –

ответ

0

В контексте glmnet(x,y) переменная y должна быть вектором.

В вашем примере, вы могли бы добиться этого с помощью:

glmnet(seq.trans, as.vector(rsem.trans)) 
2

У меня была такая же проблема, но нашел решение, что оба X и Y должны быть матрицами. Я запускал код ниже без функции as.matrix и получал ту же ошибку. Тогда я попробовал это, и это сработало. Также см. Пример в this tutorial, загрузив данные, которые должны входить в пакет, и вы увидите, что как x, так и y в первом примере являются как матрицами.

library(glmnet) 
library(dplyr) 
X <- as.matrix(select(mtcars, -mpg)) 
y <- as.matrix(select(mtcars, mpg)) 

fit <- glmnet(X, y) 
Смежные вопросы