Dear R users, This probably a really noob question, but I'm stuck. I'd like to pass some variables from bash to R as strings. I can successfully pass variables using commandArgs(), the problem is that I end up with an array. So, for example:> Args <- commandArgs(TRUE) > Args[1] "one" "two" "three" Now, it just so happens that "one", "two", "three" are names of columns that I'd like to work with. I'd like to do something like this:> print(summary(lm(Args[1] ~ Args[2])))But, this doesn't work. The alternative would be to let bash write a number of R-scripts and then rm them when done, but that seems like an unnecessary step. Can this be done? Thanks -- View this message in context: http://r.789695.n4.nabble.com/using-var-from-bash-in-R-script-tp4262857p4262857.html Sent from the R help mailing list archive at Nabble.com.
On Jan 4, 2012, at 3:08 PM, dood wrote:> Dear R users, > > This probably a really noob question, but I'm stuck. I'd like to pass some > variables from bash to R as strings. I can successfully pass variables using > commandArgs(), the problem is that I end up with an array. So, for example: > >> Args <- commandArgs(TRUE) >> Args > [1] "one" "two" "three" > > Now, it just so happens that "one", "two", "three" are names of columns that > I'd like to work with. I'd like to do something like this: > >> print(summary(lm(Args[1] ~ Args[2]))) > > But, this doesn't work. The alternative would be to let bash write a number > of R-scripts and then rm them when done, but that seems like an unnecessary > step. > > Can this be done? > > ThanksSee ?as.formula and ?paste Something along the lines of the following should work: Args <- c("one", "two", "three")> Args[1] "one" "two" "three"> paste(Args[1], "~", Args[2])[1] "one ~ two"> as.formula(paste(Args[1], "~", Args[2]))one ~ two Then use: summary(lm(as.formula(paste(Args[1], "~", Args[2])))) If 'one', 'two' and 'three' are columns in a data frame (say 'DF'), you will want to use the data argument in the call to lm(): summary(lm(as.formula(paste(Args[1], "~", Args[2])), data = DF)) HTH, Marc Schwartz
On Jan 4, 2012, at 4:08 PM, dood wrote:> Dear R users, > > This probably a really noob question, but I'm stuck. I'd like to > pass some > variables from bash to R as strings. I can successfully pass > variables using > commandArgs(), the problem is that I end up with an array.Huh? You should be getting a character vector.> So, for example: > >> Args <- commandArgs(TRUE) >> Args > [1] "one" "two" "three" > > Now, it just so happens that "one", "two", "three" are names of > columns.... columns? Of what? Or perhaps ... in what? Does this "what" have a name in the R workspace?> that > I'd like to work with. I'd like to do something like this: > >> print(summary(lm(Args[1] ~ Args[2])))No 'data' argument to lm. You would be getting better answers if you provided more specifics.> > But, this doesn't work. The alternative would be to let bash write a > number > of R-scripts and then rm them when done, but that seems like an > unnecessary > step. > > Can this be done?require(fortunes) fortune("Yoda")> > Thanks > > > > -- > View this message in context: http://r.789695.n4.nabble.com/using-var-from-bash-in-R-script-tp4262857p4262857.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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 > and provide commented, minimal, self-contained, reproducible code.David Winsemius, MD West Hartford, CT