我的文件夹中有105个压缩文件。它们都包含一个同名的csv文件,即“ EapTransactions_1”
当前,我正在R中使用以下代码将它们全部提取到新文件夹中:
library(plyr)
outDir<-"C:/Users/dhritul.gupta/Migration Files/Trial1/extract"
zipF=list.files(path = "C:/Users/dhritul.gupta/Migration Files/Trial1", pattern = "*.zip", full.names = TRUE)
ldply(.data = zipF, .fun = unzip, exdir = outDir)
这种方法的问题在于,由于所有文件名都相同,因此每个文件名都将被覆盖,并且仅保存最后一个。
在提取过程中是否有通过重命名它们或在文件名中添加前缀/后缀来保存它们中的每一个的方法?
答案 0 :(得分:1)
在进行使用file.rename
的呼叫之前,您可以尝试使用unzip
在每个文件的末尾添加一个唯一的数字:
zipF <- list.files(path = "C:/Users/dhritul.gupta/Migration Files/Trial1",
pattern = "*.zip", full.names = TRUE)
file.rename(zipF, paste0("EapTransactions_", 1:105))
ldply(.data=zipF, .fun=unzip, exdir=outDir)
答案 1 :(得分:0)
我试图根据蒂姆的想法建立一些东西。当我将文件存储在临时位置以重命名文件时,它对我有用。然后,我将重命名的文件移到了最终目的地,并删除了临时文件。
TempoutDir <-"C:/Users/dhritul.gupta/Migration Files/Trial1/extract/Temp" # Define a temp location
setwd(TempoutDir) #setwd for rename/remove functions to work
for (i in 1:length(zipF))
{
unzip(zipF[i],exdir=TempoutDir,overwrite = FALSE)
#Files are overwritten because of same name. Give a new name to the file with a random number using runif and save them at the final location. Delete the files in temp folder
a <- c(list.files(TempoutDir)) #Vector with actual file name
b <- c(paste(runif(length(list.files(TempoutDir)), min=0, max=1000 ),as.character(list.files(TempoutDir))))
#Vector with an appended temp number in front of the file name
file.rename(a,b) # Rename the file in temp location
file.copy(list.files(TempoutDir),outDir) # Move file from temp location to main location
file.remove(list.files(TempoutDir)) # Delete files in Temp location
rm(a)
rm(b) #Delete vectors a,b from environment
}
您应该将所有文件移动到所需的文件夹,文件名前应添加随机数,而temp文件夹中应无任何内容