R遍历数个数据帧列表的循环代码

时间:2019-05-31 13:08:21

标签: r list loops dataframe lapply

我有几个数据框列表,我想格式化所有数据框列表中每个数据框的日期。这是示例代码:

dfl1$ABC_1$Date = as.Date(dfl1$ABC_1$Date,format="%Y-%m-%d")
class(dfl1$ABC_1$Date)

我知道如何手动更改日期列:

{{1}}

但是我该如何对我所有数据框列表中的每个日期列执行此操作?

2 个答案:

答案 0 :(得分:2)

这可以通过lapply完成:

lapply(dfl1, function(x) {
  x$Date <- as.Date(x$Date, format="%Y-%m-%d") 
  return(x)})

如果要对所有df列表执行此操作,则需要将其存储在列表中,然后可以使用上述调用的稍作修改的版本:

df_list <- list(dfl1, dfl2, dfl3, abclist)

lapply(df_list, function(x) {
  x[[1]]$Date <- as.Date(x[[1]]$Date, format="%Y-%m-%d") 
  return(x)})

这假定Date列始终具有相同的名称“日期”。

答案 1 :(得分:2)

这是使用getassign的一个选项

nms <- c('dfl1', 'dfl2', 'dfl3', 'abclist')
lapply(nms, function(x) assign(x,lapply(get(x), 
                                 function(y) {y$Date1 <- as.Date(y$Date, format="%Y-%m-%d") 
                                 return(y)}), 
                        envir = .GlobalEnv))

PS:请注意assign,因为它会改变您的全局环境.GlobalEnv。许多R用户会在assign上提出列表解决方案。