At this point you need to learn how to do some basic debugging of your
script.  Open a GUI window that you can copy/paste parts of your script and
execute it piece-meal.  Get to the point where you want to change your
working directory and do a 'getwd()' to see where you are.  It is obvious
from your error message that whatever directory you are giving as an
argument is not valid at the point you are executing the 'setwd' function.
At least put a 'print(getwd())' right before your setwd function call.

This is debugging 101 that you will have to learn so that you can develop
more complex scripts.

On Sun, Feb 26, 2012 at 4:12 PM, ying chen <ying_chen@live.com> 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);
> # load the necessary libraries
> library("A");  # A fake package name
> library("B");  # B fake package name
> library("C");  # C fake package name
> # 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@I7-3930K:~/Rtest$ R --slave --args Data01 < scriptB.R
>
> I got the error message:
>
> sean@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
>
> What did I do wrong? I think I have the right to read and write to the
> directories.
>
> One more question, is there anyway to modify this script to make it work
> on all data directories under /home/sean/Rtest by itself?
>
> Thanks a lot for the help!
>
> Ying
>
> sean@I7-3930K:~/Rtest$ ls -l
> total 56
> drwx------ 3 sean sean 4096 2012-02-25 20:39 Data01
> drwx------ 2 sean sean 4096 2012-02-25 20:28 Data02
> drwx------ 2 sean sean 4096 2012-02-26 07:41 Data03
> drwx------ 2 sean sean 4096 2012-02-25 21:18 Data04
> drwx------ 2 sean sean 4096 2012-02-25 20:27 Data05
> -rw-r--r-- 1 sean sean  437 2012-02-26 15:28 scriptA.R
> .......
>
> From: ying_chen@live.com
> To: michael.weylandt@gmail.com
> Date: Sun, 26 Feb 2012 16:00:20 -0500
> CC: r-help@r-project.org
>  Subject: Re: [R] Help needed! Error in setwd(newdir) : cannot change
> working directory
>
>
>
>
>
>
> Hi,
> I am sorry about the format it showed up. I do not know what happened as
> it looks fine when I read it using chrome on ubuntu 11.10 64bit. 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 librarieslibrary("A");  # A fake package
> namelibrary("B");  # B fake package namelibrary("C");  # C fake package
> name........    #data processing........    #data processing........
>  #data processing# unload the librariesdetach("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 argsargs <- commandArgs(TRUE);# store the current
> directoryinitial.dir <- getwd();newdir <-
> paste(initial.dir,args,sep="/");outfilename <- paste(args,"out",sep=".");#
> change to the new directorysetwd(newdir);# load the necessary
> librarieslibrary("A");  # A fake package namelibrary("B");  # B fake
> package namelibrary("C");  # C fake package name# set the output
> filesink(outfilename);........    #data processing........    #data
> processing........    #data processing# close the output filesink();#
> unload the librariesdetach("package:A");
>  #detach("package:B");detach("package:C");# change back to the original
> directorysetwd(initial.dir);
> ##################################################################
> I run the scriptB.R by
> sean@I7-3930K:~/Rtest$ R --slave --args Data01 < scriptB.R
> I got the error message:
> sean@I7-3930K:~/Rtest$ R --slave --args Data01 < scriptB.RAttempting to
> load the environment ‘package:R.utils’Loading required package:
> R.methodsS3R.methodsS3 v1.2.1 (2010-09-18) successfully loaded. See
> ?R.methodsS3 for help.Loading required package: utilsR.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
> directoryExecution halted
> What did I do wrong? I think I have the right to read and write to the
> directories.
> One more question, is there anyway to modify this script to make it work
> on all data directories under /home/sean/Rtest by itself?
> Thanks a lot for the help!
> Ying
> sean@I7-3930K:~/Rtest$ ls -ltotal 56drwx------ 3 sean sean 4096
> 2012-02-25 20:39 Data01drwx------ 2 sean sean 4096 2012-02-25 20:28
> Data02drwx------ 2 sean sean 4096 2012-02-26 07:41 Data03drwx------ 2 sean
> sean 4096 2012-02-25 21:18 Data04drwx------ 2 sean sean 4096 2012-02-25
> 20:27 Data05-rw-r--r-- 1 sean sean  437 2012-02-26 15:28 scriptA.R.......
> > From: michael.weylandt@gmail.com
> > Date: Sun, 26 Feb 2012 12:48:57 -0500
> > Subject: Re: [R] Help needed! Error in setwd(newdir) : cannot change
> working directory
> > To: ying_chen@live.com
> > CC: r-help@r-project.org
> >
> > This is a mess -- please resend in plain text.
> >
> > Also, there are not, to my knowledge, packages (not libraries) called
> > "A", "B", or "C" so your script doesn't even begin to look
> > reproducible were it legible.
> >
> > Do you have read/write access to the directories in question?
> >
> > Michael
> >
> > On Sat, Feb 25, 2012 at 11:25 PM, ying chen <ying_chen@live.com> wrote:
> > >
> > > Hi Guys,
> > >
> > > I am new to R and just trying to write a small script to automate a
> couple commands. But I run into the setwd(): cannot change working
> directory.
> > > I googled a little bit and tried all fixes/suggestions with no success.
> > > Basically I have a script 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. Here is my mytest02.R
> script:
> > >>># 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);>># load the necessary libraries>>library("A");
>  #>>library("B");>>library("C");>># 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);
> > > Then I run the script by
> > >>>sean@I7-3930K:~/Rtest$ R --slave --args Data01 < mytest02.R
> > > I got the error message:
> > >>>sean@I7-3930K:~/Rtest$ R --slave --args Data01 <
> mytest02.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
> > > What did I do wrong?
> > > One more question, is there anyway to modify this script to make it
> work on all data directories under /home/sean/Rtest by itself?
> > > Thanks a lot for the help!
> > > Ying
> > >
> > >        [[alternative HTML version deleted]]
> > >
> > >
> > > ______________________________________________
> > > R-help@r-project.org mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> > > and provide commented, minimal, self-contained, reproducible code.
> > >
>
>
>        [[alternative HTML version deleted]]
>
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>        [[alternative HTML version deleted]]
>
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>
>


-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

	[[alternative HTML version deleted]]

