将收集功能应用于多个csv文件,将每个输入转换为在R中具有相应名称的输出文件

问题描述 投票:0回答:1

我使用“ list.files”函数将很多csv文件制成列表:

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

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

要遍历文件,我在使用lapply()时遇到了裂痕

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

我不确定如何获取相应的输出文件名,因此我尝试在lapply函数之前添加以下代码,以便至少输出文件具有唯一的名称并且不会被覆盖:

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

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

r filenames lapply sink
1个回答
0
投票

您可以尝试:

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取代。

© www.soinside.com 2019 - 2024. All rights reserved.