> > 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 <mepst...@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) > mepst...@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" <mepst...@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) > > > mepst...@illinois.edu > > > > > > ______________________________________________ > > > R-help@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@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]] ______________________________________________ R-help@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.