[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