[R] Data frame referencing?

Gabor Grothendieck ggrothendieck at gmail.com
Fri Aug 4 13:53:36 CEST 2006


When specifying a column name with [ the name must be quoted (unlike
when using it with $):

   a[a$y > 0.5, "y"] <- 1

On 8/4/06, Sander Oom <slist at oomvanlieshout.net> wrote:
> Dear R users,
>
> When you do:
> > x <- rnorm(10)
> > y <- rnorm(10)
> > z <- rnorm(10)
> > a <- data.frame(x,y,z)
> > a$x
>  [1]  1.37821893  0.21152756 -0.55453182 -2.10426048 -0.08967880  0.03712110
>  [7] -0.80592149  0.07413450  0.15557671  1.22165341
>
> Why does this not work:
> > a[a$y>0.5,y] <-1
> Error in "[<-.data.frame"(`*tmp*`, a$y > 0.5, y, value = 1) :
>        only 0's may be mixed with negative subscripts
>
> While this works:
> > a[a$y>0.5,2] <-1
>
> > a
>             x          y          z
> 1   1.37821893 -1.0887363  1.7340522
> 2   0.21152756 -0.7256467 -1.3165373
> 3  -0.55453182  1.0000000 -2.1116072
> 4  -2.10426048 -0.4898596 -1.5863823
> 5  -0.08967880  1.0000000 -0.9139706
> 6   0.03712110  1.0000000 -1.3004970
> 7  -0.80592149 -0.7004193 -0.1958059
> 8   0.07413450  1.0000000 -1.3574303
> 9   0.15557671 -0.3335407 -2.1991236
> 10  1.22165341  1.0000000 -0.7576708
>
> For a complex loop I would prefer to reference the right colomn by name,
> not by number! Now, when the colomns change, I need to check my code to
> make sure that the right colomns are referenced.
>
> Suggestions much appreciated!
>
> Thanks in advance,
>
> Sander.
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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