#r
#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>9amp;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:
Мы можем присвоить исходному каталогу идентификатор, прежде чем установить его в качестве текущего каталога, и в конце вернуть 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>9amp;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)
Комментарии:
1. Отлично! Спасибо за это!