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

“[.data.frame`”(num.response,x==y)中的r mlr surv.ranger错误:选择了未定义的列

mlr r
  •  0
  • LeGeniusII  · 技术社区  · 6 年前

    准备数据(“卵巢”生存包):

    require(pacman)
    p_load(mlr, survival, tidyverse, ranger)
    data("ovarian")
    ovarian$rx <- factor(ovarian$rx, 
                         levels = c("1", "2"), 
                         labels = c("A", "B"))
    ovarian$resid.ds <- factor(ovarian$resid.ds, 
                               levels = c("1", "2"), 
                               labels = c("no", "yes"))
    ovarian$ecog.ps <- factor(ovarian$ecog.ps, 
                              levels = c("1", "2"), 
                              labels = c("good", "bad"))
    ovarian <- ovarian %>% mutate(age_group = ifelse(age >=50, "old", "young"))
    ovarian$age_group <- factor(ovarian$age_group)
    

    现在,运行包“mlr”,surv.ranger:

    trainTask <- makeSurvTask(data = ovarian, target = c("futime", "fustat"))
    trainLearner <- makeLearner("surv.ranger", predict.type = "response")
    train(trainLearner,trainTask)
    Error in `[.data.frame`(num.response, x == y) : 
      undefined columns selected
    

    为什么会出错?如何修复?

    然后我尝试使用另一个示例数据集(mlr包中的lung.task),但得到了另一个错误:

    trainLearner <- makeLearner("surv.ranger", predict.type = "response")
    train(trainLearner,lung.task) # lung.task is from mlr package
    Error in ranger::ranger(formula = NULL, dependent.variable.name = tn[1L],  : 
      argument ".weights" is missing, with no default
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   PhilippPro    6 年前

    我花了很长时间才发现,但现在我发现了错误。它来自包Ranger中的参数respect.unordered.factors,这也不起作用:

    ranger::ranger(formula = NULL, dependent.variable.name = "futime", status.variable.name = "fustat", data = ovarian, respect.unordered.factors = "order")
    

    要解决此问题,可以将其设置为另一个值:

    lrn <- makeLearner("surv.ranger", predict.type = "response", respect.unordered.factors = "partition")
    lrn <- makeLearner("surv.ranger", predict.type = "response", respect.unordered.factors = "order")
    

    编辑:在GitHub的最新Ranger版本中,此错误不再出现。要安装它,请使用以下命令并重新启动r:

    devtools::install_github("imbs-hl/ranger")
    

    这里也可以看到: https://github.com/imbs-hl/ranger/issues/359