[R] [] vs [[]]

Jan Goebel jgoebel at diw.de
Fri Oct 20 13:06:47 CEST 2000


On Fri, 20 Oct 2000, Bill Simpson wrote:

> I have read over Venables and Ripley and am still confused about [] vs
> [[]]. I had thought it was simple: use [] for accessing items in a vector,
> and [[]] for items in a list.
> 
> Vector
> > x<-1:10
> > x[4]
> [1] 4
> > x[[4]]
> [1] 4
> doesn't seem to matter if you use [] or [[]]

In this special case yes (IMHO)

> 
> List
> > x<-list(1,2,3,4)
> > x[2]
> [[1]]
> [1] 2
> 
> > x[[2]]
> [1] 2
> doesn't seem to matter if you use [] or [[]]

No, it does matter:

> x<-list(1,2,3,4)
> is.list(x[2])
[1] TRUE
> is.list(x[[2]])
[1] FALSE
> is.vector(x[[2]])
[1] TRUE

Using [] with a list you get a list, using [[]] you get 
the item of these "sublist".

But be aware off: 

> testlist<- list(list(cbind(1:4,1:4),1:5,"any.item"))
> testlist[1]
[[1]]
[[1]][[1]]
     [,1] [,2]
[1,]    1    1
[2,]    2    2
[3,]    3    3
[4,]    4    4

[[1]][[2]]
[1] 1 2 3 4 5

[[1]][[3]]
[1] "any.item"

   >>> returns a list, as usual

> testlist[[1]]
[[1]]
     [,1] [,2]
[1,]    1    1
[2,]    2    2
[3,]    3    3
[4,]    4    4

[[2]]
[1] 1 2 3 4 5

[[3]]
[1] "any.item"

  >>> returns also a list!

> testlist[[1]][[1]]
     [,1] [,2]
[1,]    1    1
[2,]    2    2
[3,]    3    3
[4,]    4    4

returns the matrix!

Hope there are no more obscurity than before.

jan

-- 
-----------------------------------
Jan Goebel (mailto:jgoebel at diw.de)

DIW German Institute for Economic Research
SOEP
Königin-Luise-Str. 5
D-14195 Berlin
Germany

phone: 49 30 89789-377
-----------------------------------
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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