如何使用R中的函数覆盖计算机上的文件夹

时间:2016-07-14 13:15:42

标签: r directory overwrite

我正在尝试在我的脚本中实现一个代码,该代码将在我的计算机上创建一个新文件夹并使用以下内容将图表保存到其中:

daily <- "D:/Work/R/Daily"
dir.create(daily)
for (d in unique(data.air$yr_day)) {
 mypath <- file.path(daily, paste(name, d, ".png", sep = "" )) 
 png(filename = mypath, width = 963, height = 690) 
 timePlot(subset(data.air, yr_day == d), 
       plot.type = "p",
       y.relation = y.scale,
       pollutant = c("co2.ppm", "o2.permeg", "apo"), 
       date.pad = TRUE,
       pch = c(19,19,19),
       cex = 0.2,
       xlab = paste("Time of day in hours on", d),
       ylab = "CO2, O2, and APO concentrations",
       name.pol = c("CO2 (ppm)", "O2 (per meg)", "APO (per meg)"),
       date.breaks = 24,
       date.format = "%H:%M"
  )
 dev.off()
}

但是,在第一次运行之后,每当我再次运行代码时,该函数都不会覆盖旧文件夹及其中的图,而是返回此错误:

Warning message:
In dir.create(daily) : 'D:\Summer Work with Andrew\R\Daily' already exists

那么我如何更改代码,以便每当我再次运行代码时它会用新的代码覆盖旧的plots /文件夹?

由于

1 个答案:

答案 0 :(得分:1)

感谢评论中的建议,我设法解决了这个问题。 为了简化将来使用的工作,我创建了一个新功能来完成工作,就像@Ulrik在上面的评论中所说:

make.dir <- function(fp) {
if(!file.exists(fp)) {  # If the folder does not exist, create a new one
make.dir(dirname(fp))
dir.create(fp)
} else {   # If it existed, delete and replace with a new one  
unlink(fp, recursive = TRUE)
dir.create(fp)
  }
}