我使用“ 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')
但是,我对此很陌生,并且拖网了之后,我仍然无法实现我的目标(以上操作无效)。我将非常感谢任何能抽出时间帮助绝望的菜鸟的人。
您可以尝试:
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
取代。