[R] How to specify a data frame column using command line arg?

Jim Lemon drjimlemon at gmail.com
Mon Jun 6 07:02:00 CEST 2016


Yes, I see what you want. I can't run this myself as my work computer
runs Windows and insists on starting Statistica when I run an R file
in batch mode. What about:

plot(adl1[,args[1]],adl1[,args[2]])

I just noticed that you are plotting in ggplot, so this won't help. Maybe:

aes(x=args[1], y=args[2])

?

Jim


On Mon, Jun 6, 2016 at 1:29 PM, Douglas Johnson <todojo at gmail.com> wrote:
> Hi Jim,
>
> Thanks for the quick reply. I was trying to be clear but I think maybe the
> example was too simple. What I really have is a csv file with lots of
> columns (let's say 26) with a header (say a,b,c,d,e,,,,,z). I want to
> generate lots of scatter plots -- 'a' vs. 'b' and 'd' vs 'j' and so on and
> so on. I don't want to create a separate program for every combination of
> columns -- that would be hundreds of programs. I just want one program that
> takes three args --
> 1) the csv file name
> 2) the name of the 'x-axis' column (e.g. 'd')
> 3) the name of the 'y-asix' column (e.g. 'j')
>
> so can run:
>
> scatter_plot.r sample01.csv a b
> scatter_plot.r sample01.csv d j
> .....
>
> I can't figure out how to get  the column names from the args[] to the
> aes(x=?????, y=?????).
> There must be some kind of indirect  reference or eval() or substitute()
> operator in R but I can't find it.
>
> Anyway, thanks for taking a shot at this.
>
> Best,
>
> doug
>
>
>
>
> On Sun, Jun 5, 2016 at 10:44 PM, Jim Lemon <drjimlemon at gmail.com> wrote:
>>
>> Hi Doug,
>> I think this will work for you:
>>
>> adl1<-read.csv("test.csv")
>> adl1[,"a"]
>> [1] 1 4 7
>>
>> so, adl1[,args[1]] should get you the column that you pass as the
>> first argument.
>>
>> Jim
>>
>>
>> On Mon, Jun 6, 2016 at 5:45 AM, Douglas Johnson <todojo at gmail.com> wrote:
>> > I'm guessing this is trivial but I've spent two hours searching and
>> > reading
>> > FAQ, tutorial, introductory and 'idiom' documents and haven't found a
>> > solution. All I want to do is select a data frame column at run time
>> > using
>> > a command line arg. For example, the "test.csv" file contains:
>> >
>> > a,b,c
>> > 1,2,3
>> > 4,5,6
>> > 7,8,9
>> >
>> > If I run "test.r a", I get [1,4,7].
>> > If I run "test.r b", I get [2,5,8].
>> >
>> > Here's sample code -- how I map args[1] to column/vector 'a' or 'b' or
>> > 'c'?
>> >
>> > args <- commandArgs(trailingOnly=T)
>> >
>> > adl1<-read.csv(file="test.csv",head=T,sep=",")
>> >
>> > adl1$SOME-MAGIC-FUNCTION-OR-SYMBOL(args[1])
>> >
>> >
>> > All I'm really trying to do is generate a bunch of scatter plots of
>> > column
>> > 'x' vs. 'y' without writing a separate program for each pair.
>> >
>> >
>> > Thanks,
>> >
>> >
>> > Doug
>> >
>> >
>> >
>> > --
>> > http://www.dojopico.org <http://dojopico.org>
>> >
>> >         [[alternative HTML version deleted]]
>> >
>> > ______________________________________________
>> > R-help at 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.
>
>
>
>
> --
> http://www.dojopico.org



More information about the R-help mailing list