Help needed! Error in setwd(newdir) : cannot change working directory
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.