[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