通过函数迭代数据帧列表

时间:2015-06-03 00:02:33

标签: r

我编写了一个删除数据框的函数,只包含我想要绘制的列。我现在想通过该函数迭代一个数据帧列表,这样每个单独的数据帧只包含与我的情节相关的信息。

这是功能:

clean_data <- function(show_df){
  show_data <- show_df[,c(1:2,7)]
  colnames(show_data) <- c("Week", "WeeklyGross", "AvgTicketPrice")

  #turns WeeklyGross into Numeric values
  show_data$WeeklyGross <- gsub('[^a-zA-Z0-9.]', '', show_data$WeeklyGross)
  show_data$WeeklyGross <- as.numeric(show_data$WeeklyGross)

  #turns AvgTicketPrice into Numeric values
  show_data$AvgTicketPrice <- gsub('[^a-zA-Z0-9.]', '', show_data$AvgTicketPrice)
  show_data$AvgTicketPrice <- as.numeric(show_data$AvgTicketPrice)

  show_data
}

当我尝试通过函数迭代我的数据框列表时,这是我的代码:

df.list <- list(atw_df, cly_df, gent_df, kin_df, 
                        mo_df,on_df, van_df, war_df)
new_list <- list()
for (i in seq(df.list)){
  new_list <- clean_data(i)
}

我知道我的循环遗漏了一些东西,但我无法弄清楚是什么。我想将该列表中的每个数据框以其修改后的格式存储为变量,以便我可以使用它们来绘制信息。

编辑:进行了一些代码更改,我现在收到的show_df [,c(1:2,7)中的尺寸错误数量错误

EDIT2:对for循环进行了更多更改,仍然收到相同的错误消息。

1 个答案:

答案 0 :(得分:1)

获得功能和列表后,只需执行

即可
new_list <- lapply(df.list, clean_data)

对于clean_data中的每个数据框,将调用df.list一次,并返回新清除的数据框列表。

因此你的整个&#34;循环&#34;变

df.list <- list(atw_df, cly_df, gent_df, kin_df, 
                mo_df,on_df, van_df, war_df)

new_list <- lapply(df.list, clean_data)