[R] Non-interactive passing of quoted variables (ggplot, plyr, subset, transform, etc)

hadley wickham h.wickham at gmail.com
Mon Dec 1 18:29:36 CET 2008


On Mon, Dec 1, 2008 at 11:06 AM, Vitalie Spinu <vitosmail at rambler.ru> wrote:
> Hello Everyone,
> May be a silly question.
>
> How to pass programmatically variables which are not known in advance and
> are quoted? Variables are quoted implicitly in  functions like "subset" and
> "transform" and explicitly in ggplot and plyr.
>
> For instance I would like to have something like this:
>
> myfunc<-functon(mydata,X) subset(mydata,X>4)
> myfunc<-function(mydata,X,Y) {ggplot(mydata,aes(x=X,y=Y))+geom_points()}

For subset, just do it by hand:

mydata[mydata[[X]] > 4, ]

For ggplot, see aes_string:

aes_string(x = X, y = Y)
which will do what you want

For plyr, you can use a character vector:

ddply(mtcars, c("cyl"), colwise(mean))
ddply(mtcars, c("cyl ^ 2", "vs - am"), colwise(mean))

In general you need to use substitute or bquote.

Hadley

-- 
http://had.co.nz/



More information about the R-help mailing list