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

将“聚集”功能应用于多个csv文件,将每个输入转换为具有R中相应名称的输出文件,r,filenames,lapply,sink,R,Filenames,Lapply,Sink,我使用“list.files”功能将大量csv文件编入列表: list.files("C:/Users/gyero/Documents/daphnia/SUMMARY_CHIMP") 我想对每个文件使用gather()函数,然后使用sink()为每个csv文件生成单独的输出。我需要一些方法来确定哪个输出文件对应于哪个输入文件 为了循环浏览文件,我在使用lappy()时遇到了一个难题 我不确定如何获得相应的输出文件名-因此我尝试使用以下代码在Lappy函数前面添加,以便至少输出文件具有唯一的名称

我使用“list.files”功能将大量csv文件编入列表:

list.files("C:/Users/gyero/Documents/daphnia/SUMMARY_CHIMP")
我想对每个文件使用gather()函数,然后使用sink()为每个csv文件生成单独的输出。我需要一些方法来确定哪个输出文件对应于哪个输入文件

为了循环浏览文件,我在使用lappy()时遇到了一个难题

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

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"))
})

文件名非常感谢,这非常有用,我非常感谢。我注意到它只适用于以相同数字开头的文件名。Ie我的一半文件的名字以“24”开头,另一半以“2”开头,但它只处理“24”文件。我只是在所有文件名的前面加上“24”就解决了这个问题。再次感谢你。
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"))
})