UriB
2011-Jul-05 10:29 UTC
[R] How to translate string to variable inside a command in an easy way in R
I want to write a function that get 2 strings y and z and does the following R command. temp<-qq1[qq1$z==y,] for example if it get y="AMI" and z="PrimaryConditionGroup" It should do the following temp<-qq1[qq1$PrimaryConditionGroup=="AMI",] I could do it by the following function that is ugly and I wonder if there is an easier way to do it espacielly when temp is not the final result that I want (so I practically do not have temp<<-temp because I do not need the function to remember temp but only to remember something else that is calculated based on temp). ugly<-function(y,z) { text1<-paste("temp<-qq1[qq1$",z,sep="") text1<-paste(text1,"==y",sep="") text1<-paste(text1,",]",sep="") eval(parse(text=text1)) temp<<-temp } -- View this message in context: http://r.789695.n4.nabble.com/How-to-translate-string-to-variable-inside-a-command-in-an-easy-way-in-R-tp3645594p3645594.html Sent from the R help mailing list archive at Nabble.com.
Greg Snow
2011-Jul-05 18:50 UTC
[R] How to translate string to variable inside a command in an easy way in R
You are suffering from the fact that the longest distance between 2 points is a shortcut. The df$column notation is a shortcut for df[[column]] that has some nice properties, but the shortcut gets in the way when you want to do something more structured. Try qq1[[z]]==y and avoid all that pasting, parsing, and evaluating. -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.snow at imail.org 801.408.8111> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- > project.org] On Behalf Of UriB > Sent: Tuesday, July 05, 2011 4:30 AM > To: r-help at r-project.org > Subject: [R] How to translate string to variable inside a command in an > easy way in R > > I want to write a function that get 2 strings y and z and does the > following > R command. > > temp<-qq1[qq1$z==y,] > for example if it get y="AMI" and z="PrimaryConditionGroup" > It should do the following > temp<-qq1[qq1$PrimaryConditionGroup=="AMI",] > > I could do it by the following function that is ugly and I wonder if > there > is an easier way to do it espacielly when temp is not the final result > that > I want (so I practically do not have temp<<-temp because I do not need > the > function to remember temp but only to remember something else that is > calculated based on temp). > > ugly<-function(y,z) > { > text1<-paste("temp<-qq1[qq1$",z,sep="") > text1<-paste(text1,"==y",sep="") > text1<-paste(text1,",]",sep="") > eval(parse(text=text1)) > temp<<-temp > } > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/How-to- > translate-string-to-variable-inside-a-command-in-an-easy-way-in-R- > tp3645594p3645594.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.