[R] adding logical vector to data frame

Emmanuel Paradis paradis at isem.univ-montp2.fr
Sat Sep 8 00:10:33 CEST 2001


At 15:31 07/09/01 -0400, Thomas Vogels <tov at ece.cmu.edu> wrote:
>
>Hello.  I'm afraid that I'm missing something very obvious this
>afternoon...
>
>When I add a column to a data.frame (by assigning to a "new" column
>name a logical vector), I thought that I had (at least) 3 options to
>do so:
>
>R> j <- data.frame (x=1:2)
>
>R> j$y <- c(TRUE,FALSE) #assignment 1
>R> str(j)
>`data.frame':	2 obs. of  2 variables:
> $ x: int  1 2
> $ y: logi   TRUE FALSE
>
>R> j[["y"]] <- c(TRUE,FALSE) #assignment 2
>R> str(j)
>`data.frame':	2 obs. of  2 variables:
> $ x: int  1 2
> $ y: Factor w/ 2 levels "FALSE","TRUE": 2 1
>
>R> j[["y"]] <- I(c(TRUE,FALSE)) #assignment 3
>R> str(j)
>`data.frame':	2 obs. of  2 variables:
> $ x: int  1 2
> $ y:Class 'AsIs'  logi [1:2]  TRUE FALSE
>
>
>Why is assignment 1 not identical to either assignment 2 or 3?  Is
>there a method dispatch skipped?
>
>Thanks!
>  -tom

Hi,

I think that if you use names for indexing, you have to use single brackets
["..."], not double as in your example:

> j <- data.frame (x=1:2)
> j["y"] <- c(TRUE,FALSE) #assignment 4
> str(j)
`data.frame':   2 obs. of  2 variables:
 $ x: int  1 2
 $ y: logi   TRUE FALSE


You'll need a more expert opinion than mine to explain the differences
between [ and [[, but look at the following:

> x <- 1:9
> names(x) <- LETTERS[x] # give names to the observations
> x
A B C D E F G H I 
1 2 3 4 5 6 7 8 9 
> x["C"]
C 
3 
> x[["C"]]
[1] 3
> names(x["C"])
[1] "C"
> names(x[["C"]])
NULL

The same with numeric indexing, but not logical indexing:

> x[3]
C 
3
> x[[3]]
[1] 3
> x[x == 3]
C 
3 
> x[[x == 3]]
Error: attempt to select more than one element



Emmanuel Paradis
Laboratoire de Paléontologie
Institut des Sciences de l'Évolution
Université Montpellier II
F-34095 Montpellier cédex 05
France
   phone: +33  4 67 14 39 64
     fax: +33  4 67 14 36 10
  mailto:paradis at isem.univ-montp2.fr
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list