[R] script works in Rstudio but not with Rscript

William Dunlap wdunlap at tibco.com
Wed Apr 8 22:40:16 CEST 2015


> > args <- commandArgs(TRUE)
> > num <- args[1]

and then you get a complaint about something not being numeric.
commandArgs() returns a character vector so try
   num <- as.numeric(args[1])
and you may as well preface it with
   stopifnot(length(args)>0)


Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Wed, Apr 8, 2015 at 11:20 AM, Milt Epstein <mepstein at illinois.edu> wrote:

> OK, this suggestion brings up some interesting results.  No solution,
> however.  But it's interesting ... and maybe some helpful leads.
>
> The basic/short answer to your question is no, it doesn't work with "R
> -f script".
>
> The longer answer: Note that the script is currently set up to be
> called with a command line argument, "./affinity_propagation.R 3".  So
> first I tried "R -f affinity_propagation.R 3".  That failed, but
> because it wasn't using the "3" as an argument.  So I modified the
> code to hard-code the value 3 in there and not read the command line
> argument using commandArgs(TRUE).  Then I ran the script using
> "./affinity_propagation.R" -- and it worked!  "R -f
> affinity_propagation.R" also worked.
>
> Then I noticed the --args command line option for R, and I ran "R -f
> affinity_propagation.R --args 3" on the original script, and it
> failed, the same error as I described below.
>
> Also, when you say "Try loading methods", do you mean just a line like
> the following?:
>
> library(methods)
>
> I tried that as well, and it didn't help, same error.
>
> So, given all that, any new ideas?  Is the call to commandArgs()
> screwing something up?  Can that be fixed somehow?  Is there another
> library/function I could/should use to read command line arguments?
>
> Hmmm, playing around with things some more, it looks like if I do:
>
> num <- as.integer(args[1])
>
> rather than:
>
> num <- args[1]
>
> things work.  So maybe this is an issue with types, scalar vs. array,
> number vs. string?
>
> Milt Epstein
> Programmer in Computational Genomics
> Institute for Genomic Biology (IGB)
> University of Illinois at Urbana-Champaign (UIUC)
> mepstein at illinois.edu
>
>
> On Wed, 8 Apr 2015, Henrik Bengtsson wrote:
>
> > Does it work with R -f script?  If so, then it's because Rscript does not
> > attaching methods package by default, but R does. Try loading methods at
> > the top of your script.
> >
> > My $.02
> >
> > Henrik
> > On Apr 8, 2015 07:41, "Milt Epstein" <mepstein at illinois.edu> wrote:
> >
> > > Greetings.  I am new to R, but have quite a bit of experience
> > > programming with other languages (e.g., Perl, Java, Python, shell
> > > scripting).  I'm now working on a project where I need to use R.  A
> > > colleague wrote a number of small scripts that work fine in Rstudio,
> > > but a couple of them don't work when run using Rscript (which we're
> > > planning on doing).  The behavior is basically the same on a few
> > > different machines (two of them are Linux, one I think is a Mac).  To
> > > run the scripts using Rscript, we put one of the following lines at
> > > the top of the script:
> > >
> > > #!/usr/bin/Rscript
> > > #!/usr/bin/env Rscript
> > >
> > > or called the script using Rscript:
> > >
> > > Rscript scriptname
> > >
> > > In all cases, the behavior is the same.
> > >
> > > Here's one of the scripts:
> > >
> > > #!/usr/bin/env Rscript
> > >
> > > library(apcluster)
> > > options(stringsAsFactors = FALSE)
> > >
> > > args <- commandArgs(TRUE)
> > > num <- args[1]
> > >
> > > numClusters <- num
> > > mydata <- read.csv("input_data.csv")
> > > xData <- mydata[, 1]
> > > yData <- mydata[, 2]
> > >
> > > fit <- apclusterK(negDistMat(r=2), mydata, K = numClusters)
> > > #Leave the rest commented for now
> > > #output <- data.frame(xData, yData, c(as.data.frame(fit[1]),
> > > as.data.frame(fit[2]), as.data.frame(fit[3])))
> > > #write.csv <- write.table(output, file = "output_AP.csv", sep = ",",
> > > row.names = FALSE, col.names = FALSE)
> > >
> > > Here's a call to the script:
> > >
> > > $ ./affinity_propagation.R 3
> > >
> > > Attaching
> > >
> > > The following object is masked package::
> > >
> > >     heatmap
> > >
> > > Trying p = -15.41969
> > >    Number of clusters: 17
> > > Error in tmpk - K : non-numeric argument to binary operator
> > > Calls: apclusterK ... apclusterK -> .local -> apclusterK -> apclusterK
> ->
> > > .local
> > > Execution halted
> > >
> > > The line with the expression "tmpk - K" is from the code for the
> > > apclusterK() function (from the apcluster library).  The
> > > definition/value of tmpk is set using a call to the function length().
> > > I mention this because the failure we're getting with the other script
> > > also seems to involve an expression with call to length().  Here's the
> > > error from calling that script:
> > >
> > > $ ./spectral_clustering.R 3
> > > Loading required package: methods
> > > Error in length(tmpsig) * nc : non-numeric argument to binary operator
> > > Calls: specc -> specc -> .local -> matrix
> > > Execution halted
> > >
> > > The script is calling the specc() function in the kernlab library.
> > >
> > > Any ideas what's going on here, why it's not working and what we can
> > > do to get it to work?  Is there something that needs to be set or run
> > > in .Renviron or .Rprofile, say?
> > >
> > > Thanks.
> > >
> > > Milt Epstein
> > > Programmer in Computational Genomics
> > > Institute for Genomic Biology (IGB)
> > > University of Illinois at Urbana-Champaign (UIUC)
> > > mepstein at illinois.edu
> > >
> > > ______________________________________________
> > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > PLEASE do read the posting guide
> > > http://www.R-project.org/posting-guide.html
> > > and provide commented, minimal, self-contained, reproducible code.
> > >
> >
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list