将 gather 函数应用于多个 csv 文件,将每个输入转换为在 R 中具有相应名称的输出文件

Apply gather function to multiple csv files, converting each input to an output file with a corresponding name in R

我使用 "list.files" 函数将大量 csv 文件制作成列表:

list.files("C:/Users/gyero/Documents/daphnia/SUMMARY_CHIMP")

我想对每个文件使用 gather() 函数,然后使用 sink() 为每个 csv 文件生成单独的输出。我需要一些方法来识别哪个输出文件对应于哪个输入文件。

为了遍历文件,我使用了 lapply()

lapply(list.files[1:33], function{gather(WELL,MEASURE,A1:D6)})

我不确定如何获得相应的输出文件名 - 所以我尝试在 lapply 函数前面加上以下代码,这样至少输出文件会有一个唯一的名称并且不会被覆盖:

sink('DATA.CSV')
paste0(Sys.time(),'DATA.CSV')

但是,我对此很陌生,并且在网上搜索了我仍然无法实现我的目标(以上方法无效)。我将非常感谢任何能抽出时间帮助绝望的菜鸟的人。

你可以试试:

file_names <- list.files("C:/Users/gyero/Documents/daphnia/SUMMARY_CHIMP", 
                          full.names = TRUE)

lapply(file_names, function(x) {
    df <- read.csv(x)
    write.csv(tidyr::gather(df,WELL,MEASURE,A1:D6), 
              paste0(sub("\.csv", "", basename(x)), "_output.csv"))
})

如果文件夹中有 "A.csv""B.csv" 等文件,这将创建具有 "A_output.csv""B_output.csv" 的新文件。另请注意,gather 现已停用并替换为 pivot_longer