[R] Help needed! Error in setwd(newdir) : cannot change working directory

Petr Savicky savicky at cs.cas.cz
Sun Feb 26 22:34:04 CET 2012


On Sun, Feb 26, 2012 at 04:12:03PM -0500, ying chen wrote:
> 
> Hi, 
>  
> I am sorry about the format it showed up. I do not know what happened as now it looks worse even on my own machine. I do not know what to do, I just add "\n" to the end of each line and hope it will come out OK this time. The packages A, B, C are not the real package names.  Basically I have  scriptA.R that works from inside a directory with my data (/home/sean/Rtest/Data01). Now I want to modify the script to make it run from the upper directory (/home/sean/Rtest) because I have many data directories under /Rtest, such as /home/sean/Rtest/Data01, /home/sean/Rtest/Data02, /home/sean/Rtest/Data03,..... I want to modify my script so that it will run from /Rtest, and with the data directory name as arg passed to my R script. My point is that when I put the scriptA.R in data directory such as Data01, it works. Here are my scriptB.R script: 
>  
> ######################scriptA.R######################################### 
>  
> # load the necessary libraries 
> library("A");  # A fake package name 
> library("B");  # B fake package name 
> library("C");  # C fake package name 
> ........    #data processing 
> ........    #data processing 
> ........    #data processing 
> # unload the libraries 
> detach("package:A");   
> detach("package:B"); 
> detach("package:C"); 
> q(); 
> ####################################################################### 
> 
> But, when I tried to modify scriptA.R to scriptB.R to run it from the directory just above Data directories, I got the error message. 
> 
> ###########################scriptB.R#######################################
> 
> # retrieve args 
> args <- commandArgs(TRUE); 
> # store the current directory 
> initial.dir <- getwd(); 
> newdir <- paste(initial.dir,args,sep="/"); 
> outfilename <- paste(args,"out",sep="."); 
> # change to the new directory 
> setwd(newdir); 

Print the variable "newdir" to see, whether it contains, what you expect.

> # load the necessary libraries 
> library("A");  # A fake package name 
> library("B");  # B fake package name 
> library("C");  # C fake package name 

Loading libraries in this way does not depend on the working directory.

> # set the output file 
> sink(outfilename); 
> ........    #data processing 
> ........    #data processing 
> ........    #data processing 
> # close the output file 
> sink(); 
> # unload the libraries 
> detach("package:A");  # 
> detach("package:B"); 
> detach("package:C"); 
> # change back to the original directory 
> setwd(initial.dir); 
> 
> ################################################################## 
> 
> I run the scriptB.R by 
> 
> sean at I7-3930K:~/Rtest$ R --slave --args Data01 < scriptB.R 
> 
> I got the error message: 
> 
> sean at I7-3930K:~/Rtest$ R --slave --args Data01 < scriptB.R 
> Attempting to load the environment ?package:R.utils? 
> Loading required package: R.methodsS3 
> R.methodsS3 v1.2.1 (2010-09-18) successfully loaded. See ?R.methodsS3 for help. 
> Loading required package: utils 
> R.oo v1.8.3 (2011-11-01) successfully loaded. See ?R.oo for help. 
> 
> Attaching package: ?R.oo? 
> 
> The following object(s) are masked from ?package:R.methodsS3?: 
> 
>    throw.default 
> 
> The following object(s) are masked from ?package:methods?: 
> 
>    getClass, getClasses, getMethods 
> 
> The following object(s) are masked from ?package:base?: 
> 
>   attach, detach, environment, gc, load, save 
> 
> R.utils v1.9.11 (2012-01-17) successfully loaded. See ?R.utils for help. 
> 
> Attaching package: ?R.utils? 
> 
> The following object(s) are masked from ?package:utils?: 
> 
>     timestamp 
> 
> The following object(s) are masked from ?package:base?: 
> 
>     cat, commandArgs, getOption, inherits, isOpen, lapply, parse, 
>     remove, warnings 
> 
> [1] "/home/sean/Rtest" 
> [1] "/home/sean/Rtest/NA"       "/home/sean/Rtest/TRUE"     
> [3] "/home/sean/Rtest/Data01" 
> [1] "NA.out"       "TRUE.out"     "Data01.out" 
> Error in setwd(newdir) : cannot change working directory 
> Execution halted 

Try print(newdir) before setwd(newdir).

Petr Savicky.



More information about the R-help mailing list