首页 > 解决方案 > R如何将一列添加到csv文件列表中

问题描述

我正在尝试将 .csv 列表中的每个文件的名称添加为最后一列,所有值也等于名称。我明白了,但结果显示文件如转置之类的。我不知道如何修复它,我尝试了 data.frame,unlist,但没有。

这是代码:

workbooks <- list.files(pattern="*.csv", full.names= T)

read_workbooks <- lapply(workbooks, read.csv)

for (i in 1:length(workbooks)){
  
  name_of_file[i] <- str_replace_all(str_sub(workbooks[i], 3,
                 end = unlist(gregexpr("-current",workbooks[i]))-1),"_"," ")
  
  temp_workbook <- cbind(read_workbooks[i],"Filer Name" = name_of_file[i])
  
  write.csv(temp_workbook, file = paste(name_of_file[i],".csv",sep = ""),
            row.names = F)
}

这是结果:

标签: r

解决方案


您可以lapply借助匿名函数在同一个调用中执行此操作。

workbooks <- list.files(pattern="*.csv", full.names= TRUE)

lapply(workbooks, function(x) {
  write.csv(transform(read.csv(x), file_name = basename(x)),sprintf('new_%s.csv',
        tools::file_path_sans_ext(basename(x))), row.names = FALSE)
})

读取每个 csv workbooks,在每个文件中添加一个新的列名,即文件名,然后写入新的 csv。


推荐阅读