如何迭代地将配方分配给工作流,然后添加到嵌套数据框 (R)

问题描述 投票:0回答:0

我正在做一个项目,在我的数据集中按组创建一系列 ARIMA 模型。这是我可重现的例子:

#Load libraries
library(dplyr)
library(workflows)
library(tidyr)
library(recipes)
library(parsnip)
library(tidymodels)
library(modeltime)

#Set up parameters
df <-mtcars
rec_carb_list <- list()
num_carbs <- length(unique(df$carb))

#Nest data by carb value
df_nest <- df %>%
  nest(df_full = c(-carb))

#Create recipes
for (i in 1:num_carbs){
  rec_carb_list[[i]] <- recipe(mpg ~ disp, data = df_nest$df_full[[i]])
}

#Assign recipes to workflows
wfl_list <- workflow()

for (i in 1:num_carbs){
  
  wfl_list[[i]] <- workflow() %>%
    add_recipe(rec_carb_list[[i]]) %>%
    add_model(
      arima_reg() %>%
        set_engine(engine='auto_arima')
    )
}

#Assign workflows to data
df_nest$workflow <- NA
for (i in 1:num_carbs){
  df_nest$workflow[[i]] <- wfl_list[[i]]
}

我遇到的问题是倒数第二步。当我查看

View(wfl_list)
时,我看到了 pre、post、fit 和 trained 的预期组件,但我得到了两个额外的组件。食谱似乎没有正确映射。

我知道我可以通过不使用 for 循环并将每个配方单独分配给工作流程来解决这个问题,但在我使用的实际数据中,我有 > 6000 个组。

有人能帮我弄清楚将食谱分配给工作流程步骤有什么问题吗?

谢谢!

r workflow tidymodels r-recipes r-parsnip
© www.soinside.com 2019 - 2024. All rights reserved.