代码之家  ›  专栏  ›  技术社区  ›  nya

模型中存在错误。框架默认值(对象,数据,xlev=xlev):可变长度不同(为“z”找到)

  •  0
  • nya  · 技术社区  · 8 年前

    这个问题以前被问过 here 和 here ,但对我的问题没有帮助的答案。我的数据集中没有丢失的数据,正在尝试创建一个 model.matrix 来自 model.frame . 以下是一个可复制的示例:

    dat = data.frame(x = rep(1:3, each = 5), 
        y = rnorm(15), 
        z = rep(c(1,1.1,1.3), each = 5))
    # this works
    mt = model.matrix(model.frame(lm(y ~ x,dat)))
    # this produces the error
    mt = model.matrix(model.frame(lm(y ~ x + z,dat)))
    

    为什么以及如何解决这个问题?或者,如何以另一种有效且稳健的方式获得包含截距列的右侧值矩阵?

    1 回复  |  直到 8 年前
        1
  •  1
  •   duckmayr    8 年前

    问题是 model.matrix() 需要一个formula或terms对象作为第一个参数。解决方案:

    model.matrix(y ~ x + z, model.frame(lm(y ~ x + z, dat)))