[R] How to translate string to variable inside a command in an easy way in R

Ivan Calandra ivan.calandra at uni-hamburg.de
Thu Jul 14 09:38:31 CEST 2011


What about as.forumla()?

Like this:
form <- as.formula(paste("num", y, "~MemberID", sep=""))
agg<-aggregate(form, right.a, sum)

Would it work as you expect to?


Le 7/13/2011 19:30, Daniel Nordlund a écrit :
>> -----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
> ______________________________________________
> 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.

PhD Student
University of Hamburg
Biozentrum Grindel und Zoologisches Museum
Dept. Mammalogy
Martin-Luther-King-Platz 3
D-20146 Hamburg, GERMANY
+49(0)40 42838 6231
ivan.calandra at uni-hamburg.de


More information about the R-help mailing list