Thanks so much for the tips, I was able to use both parse() and eval()... I found eval(), quote(), bquote() easier and more flexible to use and to pass as arguments to a function.
I can't say enough that you really made my day! :) Thanks, Santosh On Tue, Dec 1, 2009 at 9:36 AM, baptiste auguie < baptiste.aug...@googlemail.com> wrote: > Hi, > > an alternative to parse() is to use quote and bquote, > > set.seed(123) > d = data.frame(a=letters[1:5], b=1:10, c=sample(0:1, 10, repl=TRUE)) > > cond1 <- quote(a=="b") > cond2 <- quote(b < 6) > cond3 <- bquote(.(cond1) & .(cond2)) > > subset(d, eval(cond1)) > subset(d, eval(cond2)) > subset(d, eval(cond3)) > > HTH, > > baptiste > > > > 2009/12/1 William Dunlap <wdun...@tibco.com>: > >> -----Original Message----- > >> From: r-help-boun...@r-project.org > >> [mailto:r-help-boun...@r-project.org] On Behalf Of Santosh > >> Sent: Tuesday, December 01, 2009 7:39 AM > >> To: r-help@r-project.org > >> Subject: Re: [R] "subset" or "condition" as argument to a function > >> > >> Dear R gurus.. > >> I had tried out some suggestions sent to me privately..and > >> unfortunately, > >> they did not work.. > >> > >> To use a condiition in a subset, the associated dataframe needs to be > >> attached and detached, which I found cumbersome to use if > >> using more than 1 > >> dataframe (with different dimensions) with same condition. I > >> would highly > >> appreciate your suggestions to overcome this problem.. Please > >> see my example > >> of usage I am trying to implement. Please note that the > >> "cond' takes in the > >> character instead of logical values... > >> > >> cond1 <- 'group==1&sales>200' > >> cond2 <- 'group==2&sales>200' > >> cond3 <- 'group==3&sales>200' > >> > >> d1 <- subset(dat,subset=cond1) > >> plot(y~x,data=dat,subset=cond1,type='b') > > > > The subset argument to plot (and many similar functions) > > must be given as a literal expression, not a string that > > could be parsed into an expression nor the name of an object > > containing an expression nor a function call that evaluates > > to an expression. This design is handy for interactive > > use but painful in programatic use. One way to deal with > > it is to use do.call, which evaluates all the arguments to > > the function and then calls the function with the arguments > > given literally. Replace the above plot call with > > do.call("plot", list(y~x,data=dat,subset=parse(text=cond1),type='b')) > > and see if you get what you want. > > > > Bill Dunlap > > Spotfire, TIBCO Software > > wdunlap tibco.com > > > >> lines(y~x,data=dat,subset=cond2) > >> points(y~x,data=dat,subset=paste(cond1,cond2,sep='&'),col='blue') > >> points(y~x,data=d1,subset=cond3,col='red') > >> > >> If I try the above, I get the following error message: > >> *Error in subset.data.frame(dat, cond) : 'subset' must > >> evaluate to logical* > >> > >> If you could also suggest references implementing similar > >> code, I would > >> highly appreciate it. > >> Thanks so much, > >> > >> Santosh > >> > >> On Mon, Nov 23, 2009 at 6:38 PM, Santosh > >> <santosh2...@gmail.com> wrote: > >> > >> > Thanks... I would try it out.. > >> > -santosh > >> > > >> > > >> > On Sat, Nov 21, 2009 at 12:04 AM, Bernardo Rangel Tura < > >> > t...@centroin.com.br> wrote: > >> > > >> >> On Fri, 2009-11-20 at 17:40 -0800, Santosh wrote: > >> >> > Dear Rxperts! > >> >> > > >> >> > I was wondering if it is possible to write a function > >> which can take in > >> >> > argument of a subset or condition.. Of course, I am aware of the > >> >> alternate > >> >> > methods like coplot, par.plot, xyplot etc... I am specifically > >> >> interested in > >> >> > using conditions/subsets with "plot".. > >> >> > > >> >> > A simple fragmented example is shown here.. > >> >> > > >> >> > pltit <- function(y,x,dat,dat1,dat2,sbst) { > >> >> > plot(y~x, data=dat, subset=sbst) > >> >> > lines(y~x,data=dat1, subset=subst) > >> >> > points(y~x,data=dat2,subset=subst) > >> >> > } > >> >> > > >> >> > pltit(profit,weeks,dat=zone1, sbst='group==1&sales>200') > >> >> > > >> >> > Could you also suggest pointers/references/examples on > >> efficient ways to > >> >> > plot simulated data overlaid with observed data? > >> >> > > >> >> > Have a good weekend! > >> >> > >> >> > >> >> > >> > > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-help@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. > >> > > > > ______________________________________________ > > R-help@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. > > > > ______________________________________________ > R-help@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. > [[alternative HTML version deleted]] ______________________________________________ R-help@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.