[R] "subset" or "condition" as argument to a function

David Winsemius dwinsemius at comcast.net
Tue Dec 1 17:04:38 CET 2009


On Dec 1, 2009, at 10:59 AM, David Winsemius wrote:

>
> On Dec 1, 2009, at 10:55 AM, David Winsemius wrote:
>
>>
>> On Dec 1, 2009, at 10:38 AM, Santosh wrote:
>>
>>> 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'
>>
>> I do not see that you have _ever_ offered a sample dataset in this  
>> thread, so this suggestion remains untested. Please report what  
>> happens when you try:
>>
>>>
>>> d1 <- subset(dat,subset=eval(parse(text=cond1)))
>>> plot(y~x,data=dat,subset=eval(parse(text=cond1)),type='b')
>>> lines(y~x,data=dat,subset=eval(parse(text=cond2)))
>>> points 
>>> (y 
>>> ~ 
>>> x 
>>> ,data 
>>> =dat,subset=eval(parse(text=paste(cond1,cond2)),sep='&'),col='blue')
>
> Probably needs to be tested with this modification:
> points(y~x, data=dat, subset=eval(parse(text=paste(cond1,cond2,  
> sep='&'))), col='blue')

And I am further guessing that the set will be empty since it seems  
likely that:
  (group==1 & group==2) == TRUE, so perhaps you should reconsider your  
logic.


>
>>> points(y~x,data=d1,subset=eval(parse(text=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.
>>
>> ?parse
>>
>>> Thanks so much,
>>>
>>> Santosh
>>>
>>> On Mon, Nov 23, 2009 at 6:38 PM, Santosh <santosh2005 at gmail.com>  
>>> wrote:
>>>
>>>> Thanks... I would try it out..
>>>> -santosh
>>>>
>>>>
>>>> On Sat, Nov 21, 2009 at 12:04 AM, Bernardo Rangel Tura <
>>>> tura at 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!
>>>>>
>>>>>
>>>>
>> -- 
>>> .
>>
>> David Winsemius, MD
>> Heritage Laboratories
>> West Hartford, CT
>>
>> ______________________________________________
>> 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.
>
> David Winsemius, MD
> Heritage Laboratories
> West Hartford, CT
>

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list