在R中对函数进行分组时,得到一个 "未使用参数错误"。

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

这是我的数据 -

library(data.table) library(purrr)
basefile2 = data.table(States = c("California","California", "California", "Texas","Texas","Texas", "Ohio", "Ohio", "Ohio"),
                       district = c("district1", "district2", "district3", "district4", "district5", "district6", "district7","district8", "district9"),
                        Cities = c("LA", "California City", "San Fran", "Houston", "Dallas", "Austin", "Columbus", "Cleaveland", "Wooster"),
                       weather = c(30, 30, 38, 49, 23, 23, 40, 23, 23),
                       week = c("W1", "W2", "W3", "W4", "W1", "W2", "W3", "W4", "W1"),
                       days = c(20, 23, 23, 41, 23, 23,43, 43, 43),
                       NEW_Cities = c("LA", "California City", NA, NA, NA, NA, NA, NA, NA),
                       NEW_district = c(NA, NA, NA, "district4", "district5", NA, NA, NA, NA),
                       Zone = c("North", "South", "East", "West", "North", "South", "East", "West", "North"))

这是我的代码

create_summary <- function(field,group_byvars) {
  Sales_Cat = basefile2[,.(Ratio = weather/days), keyby = c(group_byvars, field)]
  Sales_Cat
}

step <- function(level, group_byvars = c("week", "Zone")){
  out <- purrr::map_df(level,
                       ~create_summary(field = .x,
                                       groupby_vars = groupby_vars))

  out <- data.table::rbindlist(out, use.names = TRUE, fill = TRUE)
  head(out)
}


step(level = c("NEW_Cities", "NEW_district"),
      group_byvars = c("week", "Zone"))

但我得到了以下错误信息

 Error in create_summary(prdlevel = .x, groupby_vars = groupby_vars) : 
  unused argument (groupby_vars = groupby_vars) 

我哪里做错了?虽然groupby_vars和level都对数据进行了分组,但我还是想把它们作为单独的输入。

r data.table purrr
1个回答
0
投票

问题还在于'group_byvars'和'groupby_vars'中的一些错别字,或者'field'与'field'中的错别字。

create_summary <- function(field,group_byvars) {
  Sales_Cat = basefile2[,.(Ratio = weather/days), keyby = c(group_byvars, field)]
  Sales_Cat
}


step <- function(level, group_byvars = c("week", "Zone")){

  out <- purrr::map_dfr(level,
                       ~create_summary(field = .x,
                                       group_byvars = group_byvars))

  #out <- data.table::rbindlist(out, use.names = TRUE, fill = TRUE)
  head(out)
}


step(level = c("NEW_Cities", "NEW_district"),
      group_byvars = c("week", "Zone"))
© www.soinside.com 2019 - 2024. All rights reserved.