[R] Problem with passing a string to subset

Sebastien Bihorel sebastien.bihorel at cognigencorp.com
Mon Aug 24 14:51:11 CEST 2009


Thanks Baptiste

The eval(parse()) combination is just what I need.

baptiste auguie wrote:
> Try this,
>
> mystr <-"c==1"
> subset(foo, eval(parse(text = mystr)) )
>
> library(fortunes)
> fortune("parse") # try several times
>
> # I prefer this, but there is probably a better way
> mycond<- quote(c==1)
> subset(foo, eval(bquote(.(mycond))) )
>
> HTH,
>
> baptiste
>
> 2009/8/21 Sebastien Bihorel <sebastien.bihorel at cognigencorp.com>:
>   
>> Dear R-users,
>>
>> The following question bothered me for the whole afternoon: how can one pass
>> a string as the conditioning argument to subset? I tried plain mystr,
>> eval(mystr), expression(mystr), etc... I don't to be able to find the
>> correct syntax
>>
>>     
>>> foo <- data.frame(a=1:10,b=10:1,c=rep(1:2,5))
>>> mystr<-"c==1"
>>> subset(foo,c==1)
>>>       
>>  a  b c
>> 1 1 10 1
>> 3 3  8 1
>> 5 5  6 1
>> 7 7  4 1
>> 9 9  2 1
>>     
>>> subset(foo,mystr)
>>>       
>> Error in subset.data.frame(foo, mystr) :
>>  'subset' must evaluate to logical
>>
>>
>>
>> Any help would be greatly appreciated.
>>
>> Sebastien
>>
>> ______________________________________________
>> 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.
>>
>>     
>
>
>
>




More information about the R-help mailing list