[R] How to translate string to variable inside a command in an easy way in R
Daniel Nordlund
djnordlund at frontier.com
Wed Jul 13 19:30:13 CEST 2011
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> On Behalf Of UriB
> Sent: Wednesday, July 13, 2011 9:28 AM
> To: r-help at r-project.org
> Subject: Re: [R] How to translate string to variable inside a command in
> an easy way in R
>
> Thanks
> Here is another question
>
> I want to have a function that get a string for example
> y="AMI" and make commands like the following
>
> agg<-aggregate(numAMI ~MemberID,right.a,sum)
>
> Note that I know that numAMI is part of right.a because another function
> with the string AMI already generated it.
>
> Is there a way to do it without paste parse and eval?
>
> I can do it by the following commands for y="AMI"
>
> numy<-paste("num",y,sep="")
> texta<-paste("agg<-aggregate(",numy,sep="")
> text2<-"~MemberID, right.a, sum)"
> text1<-paste(texta,text2,sep="")
> eval(parse(text=text1))
>
> If you can have a shorter code for it then it can be productive.
>
Well, you could do the above in one line (sorry, my email client is breaking the line)
>agg <- eval(parse(text=paste("aggregate(num",y,"~MemberID,right.a,sum)",sep='')))
You can put that in a function and call it like
>your_function <- function(y) eval(parse(text=paste("aggregate(num",y,"~MemberID,right.a,sum)",sep='')))
>agg <- your_function(y='AMI')
However, you seem to be trying to wrestle R to the ground to get it to do things your way. Maybe if you gave R-help some context about your overall task (including why you need to construct these commands), someone could provide suggestions on solving your programming tasks in a more R-ish way. Just a thought.
Dan
Daniel Nordlund
Bothell, WA USA
More information about the R-help
mailing list