首页 > 解决方案 > 将数据框列表传递给我自己的函数

问题描述

我有一个清单

test2 <- list(a = tibble(qty = c(371.00000,125.00000,193.00000,8.00000,113.00000,247.00000,2.00000),
                         new_aur = c(83000,90000,110000, 114000, 117000, 119000, 120000)),
              b = tibble(qty = c(371.00000,125.00000,193.00000,8.00000,113.00000,247.00000,2.00000),
                         new_aur = c(80000,93000,120000, 113000, 117000, 119000, 120000))))

和一个函数

model_fitting_decay <- function(x) {
  set.seed(4123)
  x <- data.frame(x)
  trainIndex <- createDataPartition(x$qty, p = .8, 
                                    list = FALSE, 
                                    times = 1)
  
  df_data_train <- x[trainIndex,]
  
  trcontrol <- trainControl(method = "repeatedcv",
                            number = 10,
                            repeats = 3)
  
  model_train_decay <- lm(log(qty)~new_AUR, data=df_data_train)
  return(model_train_decay)
}

我怎样才能将我的列表作为参数传递给我的函数?我已经尝试使用do.call但它返回错误unused argument ( bla bla bla)

请帮忙。谢谢

标签: rlistfunction

解决方案


您可以使用lapplypurrr::map

model_fitting_decay <- function(x) {
  set.seed(4123)
  x <- data.frame(x)
  trainIndex <- caret::createDataPartition(x$qty, p = .8, 
                                    list = FALSE, 
                                    times = 1)
  
  df_data_train <- x[trainIndex,]
  
  trcontrol <- caret::trainControl(method = "repeatedcv",
                            number = 10,
                            repeats = 3)
  
  model_train_decay <- lm(log(qty)~new_aur, data=df_data_train)
  return(model_train_decay)
}

lapply(test2, model_fitting_decay)

推荐阅读