【问题标题】:R how to add a column to a list of csv filesR如何将一列添加到csv文件列表中
【发布时间】:2021-02-21 10:04:28
【问题描述】:

我正在尝试将 .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


    【解决方案1】:

    您可以借助匿名函数在同一个 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)
    })
    

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

    【讨论】:

    • 谢谢 Ronak,我不太明白你做了什么,但无论如何我收到了这个错误... data.frame 中的错误(list(Stock = logical(0),Symbol = logical (0), Type = logical(0), : arguments 暗示不同的行数:0, 1
    • 检查workbooks中的所有文件。我认为其中一些是空文件,因此您会收到错误消息。
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多