如何摆脱文件扩展名(.CSV),由 R 生成的文件名



我的工作文件夹中有一系列.csv文件,我写了一个代码来获取它们,做我想用它们做的所有事情,最后,将结果写在另一个文件中,在原始文件名中添加"_pp":

random <- grep(".csv",list.files(), fixed=TRUE)                             
files <- list.files()[random]   
for (igau in 1:length(files))                                               
{
(.......)
file <- paste("H:/METEO_data/AEMET_2/",files[igau],"_pp.csv",sep="")
write.table(d,file,row.names=TRUE, col.names=NA, sep=" ")                   
}

问题是当我想要的是"3059_pp.csv"时,我得到"3059.csv_pp.csv"。有没有办法把第一.csv拿出来?

谢谢

前两行可以简化为一个使用 pattern 参数的list.files调用。 然后,您可以使用 gsub 更改输出文件名。

files <- list.files(pattern=".csv")
for(i in 1:length(files)) {
  outFile <- file.path("H:/METEO_data/AEMET_2",
                       gsub(".csv", "_pp.csv", files[igau]))
  write.table(d, outFile, row.names=TRUE, col.names=NA, sep=" ")
}

你也可以循环访问files中的元素,但这假设你不需要igau索引来做其他任何事情。 为了避免将来混淆自己,您可能希望避免将 file 用于变量名称,因为它是打开文件连接的基本包函数。

for(File in files) {
  outFile <- file.path("H:/METEO_data/AEMET_2",
                       gsub(".csv", "_pp.csv", File))
  write.table(d, outFile, row.names=TRUE, col.names=NA, sep=" ")
}

问题是files[igau]包含.csv扩展名。你必须做这样的事情:

basefile <- strsplit(files[igau], ".")
file <- paste("H:/METEO_data/AEMET_2/",basefile[0],"_pp.csv",sep="")

basefile[0]将包含第一个.之前的所有内容。这意味着如果您的文件名中带有点(即 3059.2.csv )。如果是这种情况,那么你必须paste() basefile除了最后一个元素之外的所有元素,这将是你试图摆脱的csv

最新更新