循环后如何恢复原始文件目录?

时间:2019-04-19 08:51:22

标签: r

我是R语言的新手。当前正在使用需要首先设置目录的功能。假设我的原始目录为“ C:/ Users / DS / Desktop / LLLRRR / coursera / Coursera”。函数(“ specdata”,...)后,它将目录设置为“ C:/ Users / DS / Desktop / LLLRRR / coursera / Coursera / specdata”。有什么方法可以在循环结束时恢复到原始目录?

我当前的解决方案是在循环末尾添加setwd(“ C:/ Users / DS / Desktop / LLLRRR / coursera / Coursera”)。

pollutantmean <- function(directory,pollutant,id=1:332){
    path<-paste(getwd(),directory,sep="/")
    setwd(path)
    data<-data.frame()
    if(id<10){
      readfile<-paste("00",id,".csv",sep="")
      dt<-read.csv(readfile)
      data<-rbind(data,dt)
    }else if(id>9&id<100){
      readfile<-paste("0",id,".csv",sep="")
      dt<-read.csv(readfile)
      data<-rbind(data,dt)
    }else{
      readfile<-paste(id,".csv",sep="")
      dt<-read.csv(readfile)
      data<-rbind(data,dt)
    }
    return(mean(data[,pollutant], na.rm = T))
}
pollutantmean("specdata", "nitrate", 23)

“”“

pollutantmean("specdata", "nitrate", 23)
[1] 1.280833

getwd()
[1] "C:/Users/DS/Desktop/LLLRRR/coursera/Coursera/specdata"

它仍然是新目录 有没有更好的方法来恢复原始目录? “”“

1 个答案:

答案 0 :(得分:0)

我们可以为原始目录分配一个标识符,然后再将其设置为当前目录,最后返回一个list

pollutantmean <- function(directory,pollutant,id=1:332){
    origdir <- getwd() # modified
    path<-paste(origdir,directory,sep="/")
    setwd(path)
    data<-data.frame()
    if(id<10){
      readfile<-paste("00",id,".csv",sep="")
      dt<-read.csv(readfile)
      data<-rbind(data,dt)
    }else if(id>9&id<100){
      readfile<-paste("0",id,".csv",sep="")
      dt<-read.csv(readfile)
      data<-rbind(data,dt)
    }else{
      readfile<-paste(id,".csv",sep="")
      dt<-read.csv(readfile)
      data<-rbind(data,dt)
    }

    list(Mean = mean(data[,pollutant], na.rm = TRUE), Dir = origdir) # modified
}
pollutantmean("specdata", "nitrate", 23)