[R] Problem with passing a string to subset

baptiste auguie baptiste.auguie at googlemail.com
Fri Aug 21 22:38:09 CEST 2009


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.
>



-- 
_____________________________

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