[R] using var from bash in R script

Marc Schwartz marc_schwartz at me.com
Wed Jan 4 23:00:00 CET 2012


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?
> 
> Thanks


See ?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



More information about the R-help mailing list