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.
Yes, that's what I meant. My suggestion was just a guess given that it is not that uncommon to see cases where a script works with 'R' but not with 'Rscript'. From your answers/tests, it's seems clear that your problem now has to do with parsing arguments. /Henrik > > 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. ______________________________________________ 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.