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

David Winsemius dwinsemius at comcast.net
Tue Dec 1 17:05:26 CET 2009


On Dec 1, 2009, at 11:04 AM, David Winsemius wrote:

>
> 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:
                                                                       
^unlikely^
> (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
>

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list