[R] Problem with passing a string to subset

baptiste auguie baptiste.auguie at googlemail.com
Sat Aug 22 11:08:02 CEST 2009


That's right, however the bquote construct may be useful when
combining several conditions,

subset(foo, eval(bquote(.(mycond) & a < 5)) )

baptiste

2009/8/22 Vitalie S. <vitosmail at rambler.ru>:
> On Fri, 21 Aug 2009 22:38:09 +0200, baptiste auguie
> <baptiste.auguie at googlemail.com> 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))) )
>>
> or just
> subset(foo, eval(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.
>>>
>>
>>
>>
>
>
> --
> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
>



-- 
_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

http://newton.ex.ac.uk/research/emag




More information about the R-help mailing list