使用 lapply 或 Map 操作数据帧列表中的相同变量

Manipulate same variable in a list of dataframes using lapply or Map

我通过使用 this 优雅的 lapply 解决方案成功地导入了 10 个 .csv 文件。 现在的输出是 list of 10 data.frames。 每个 data.frame 包含变量 yearvalue:

 file_names <- dir("../XYZ", pattern = glob2rx("*.csv"))
 data_list <- lapply(filenames, read.table, header = TRUE)
 head(data_list[[1]])
  year     value
1 200712   2320,00 
2 200712   120,00    
3 200712   188,00 
4 200712   1328,00    
5 200712   46,00    
6 200712   98,00 
 head(data_list[[2]])
  year     value
1 200812   320,00 
2 200812   1120,00    
3 200812   1288,00 
4 200812   1128,00    
5 200812   746,00    
6 200812   938,00 

不幸的是,变量 year 的格式是 yyyymm,但我希望它是 yyyy.

因此我想使用另一个 lapplyMap 来更改每个 data.frame 中 year 的格式。类似于:

data_list <- lapply(data_list[["year"]], FUN = substr(1,4), ... )

或:

data_list <- Map(substr(1,4), data_list, "year")

但这行不通...有什么想法吗?

你可以试试

data_list <- lapply(data_list, function(x) {x$year <- substr(x$year, 1,4)
                                   x})