[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