【问题标题】:Coercion error using purrr to generate models使用 purrr 生成模型的强制错误
【发布时间】:2017-08-07 21:06:43
【问题描述】:

为了提高我对 R 库 purrr 和 dplyr 的理解,我正在研究 Hadley Wickham 描述的一个示例,该示例使用不同的模型和数据集拆分。但是,我在使用多个参数时遇到了强制错误,例如使用 map2() 和 pmap():

(列表)对象不能被强制输入“整数”

我已经简化了我的软件,以尝试使用以下方法确定我出错的地方:

    library(dplyr)
    library(purrr)
    library(randomForest)

    # generate a list of data frames ( using the iris data set )

    data_list <- lapply(1:10, FUN = function(x) iris)

    # generate a list of parameters:

    param_list <- as.list(seq.int(100,1000, by = 100))

    # - following works

    models <- data_list %>% map(~randomForest(Species ~., data = .))

   # - following works

    models <- seq_along(param_list) %>% 
              map(~randomForest(Species ~., data = data_list[[.]],
                                           ntree = param_list[[.]]))

    # - following has error: Error in randomForest.default(m, y, ...) : 
    #     (list) object cannot be coerced to type 'integer'

     models <- map2(data_list, param_list, 
                 ~randomForest(Species ~., data = ., ntree = .))

几天来我一直在努力解决这个问题,因此我可能对列表、数据框等感到困惑。因此感谢您的帮助。

【问题讨论】:

    标签: r dplyr purrr


    【解决方案1】:

    你应该没问题:

    models <- map2(data_list, param_list, 
                   ~randomForest(Species ~., data = .x, ntree = .y))
    

    map2 中,公式右轴上匿名函数的隐式参数是.x.y

    【讨论】:

    • 感谢我在 map2() 上实施的解决方案,它有效。很抱歉提出另一个相关问题 - 但是当我添加第三个列表时,例如mtry_list
    • 我很感兴趣,但我真的不知道为什么会这样(我证实了这一点)。我看到了这个问题github.com/tidyverse/purrr/issues/203,如果有疑问,我会建议使用常规匿名函数语法。
    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多