Ошибка приведения при использовании purrr для генерации моделей
Чтобы улучшить моё понимание R-библиотек purrr и dplyr, я работаю над примером, описанным Хэдли Уикхемом, используя различные модели и разбиения набора данных. Однако я сталкиваюсь с ошибкой приведения при использовании нескольких аргументов, например с использованием map2() и pmap ():
(список) объект не может быть приведен к типу '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 ответ
Решение
Вы должны быть в порядке с:
models <- map2(data_list, param_list,
~randomForest(Species ~., data = .x, ntree = .y))
В map2
неявными аргументами для анонимных функций в RHS формулы являются .x
а также .y
,