使用purrr生成模型时出现强制错误

时间:2017-03-16 15:29:12

标签: r dplyr purrr

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

  

(list)对象不能被强制输入'integer'

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

    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 = .))

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

1 个答案:

答案 0 :(得分:2)

你应该没问题:

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

map2中,公式的RHS上的匿名函数的隐式参数为.x.y