【问题标题】:'x' and 'w' must have same length - error in weighted.mean.default'x' 和 'w' 必须具有相同的长度 - weighted.mean.default 中的错误
【发布时间】:2014-01-29 23:16:51
【问题描述】:

我在使用 R 中的包 glmnet 时遇到问题。我正在尝试使用现成的,但遇到以下问题:

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

weighted.mean.default(y, weights) 中的错误: 'x' 和 'w' 必须具有相同的长度

但输入的大小相同:

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

是什么导致了这个错误?

【问题讨论】:

  • y 应该是一个向量,而不是一个矩阵。 rsem.trans 是你的 y,它是一个矩阵。
  • 是的,这解决了我的问题。
  • 我的还没解决。我尝试申请 as.vector(y) 但仍然遇到同样的问题。如果我申请 c(y) 我会得到与 cv.glmnet 不同的错误:y (1) 中的观察数不等于 x (42) 的行数
  • 好的,知道了:as.numeric(unlist(y))

标签: r glmnet


【解决方案1】:

我遇到了同样的问题,但发现解决方案是 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)

【讨论】:

    【解决方案2】:

    glmnet(x,y) 的上下文中,变量y 应该是一个向量。

    在您的示例中,您可以使用:

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

    【讨论】:

      猜你喜欢
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2019-05-04
      相关资源
      最近更新 更多