[R] Using the value of a variable as a variable
Henrik Bengtsson
hb at stat.berkeley.edu
Wed Jan 30 23:19:10 CET 2008
On Jan 30, 2008 1:15 PM, Ted Harding <Ted.Harding at manchester.ac.uk> wrote:
> On 30-Jan-08 19:47:55, Ramon Hidalgo wrote:
> > Hello,
> >
> > How can I make the following expressions are equivalent
> > datos$Col1 and datos$var when I define var <- "Col1"?
> >
> > I am trying to get the same result with
> >> datos$Col1
> > [1] 0 1 1 0 1 0 1 1 0
> >
> > And
> >> datos$var
> > NULL
This one must the most frequently asked question among all FAQs.
>
> It will work if you use [], though I'm not sure that
> this is the best or orthodox way to do it:
>
> datos<-data.frame(Col1=c(0,1,1,0,1,0,1,1,0),Col2=c(1,2,2,1,2,1,2,2,1))
> var<-"Col1"
> datos[var]
> ## Col1
> ##1 0
> ##2 1
> ##3 1
> ##4 0
> ##5 1
> ##6 0
> ##7 1
> ##8 1
> ##9 0
In order to get a similar return value as operator $() you want to use
[[(), i.e.
datos[[var]]
or alternatively
datos[,var]
In the first case you treat the data frame as if it is a list
structure, and in the second case you treat it as if it is a matrix,
which will drop the dimensions if you ask for a single column, cf.
datos[,var]
datos[,var, drop=TRUE]
datos[,var, drop=FALSE]
/Henrik
>
> Hoping this helps,
> Ted.
>
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 30-Jan-08 Time: 21:15:07
> ------------------------------ XFMail ------------------------------
>
> ______________________________________________
> 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