Proper way to access list elements in R
38,557
All these methods give different outputs
[ ] returns a list
[[ ]] returns the object which is stored in list
If it is a named list, then
List$name or List[["name"]] will return same as List[[ ]]
While List["name"] returns a list, Consider the following example
> List <- list(A = 1,B = 2,C = 3,D = 4)
> List[1]
$A
[1] 1
> class(List[1])
[1] "list"
> List[[1]]
[1] 1
> class(List[[1]])
[1] "numeric"
> List$A
[1] 1
> class(List$A)
[1] "numeric"
> List["A"]
$A
[1] 1
> class(List["A"])
[1] "list"
> List[["A"]]
[1] 1
> class(List[["A"]])
[1] "numeric"
Comments
-
bytestorm almost 2 years
I am trying to make a list and access it's cells later in R. I am new to R and have a Matlab background. These
[]
,[[]]
are really bugging me. I tried reading the help and online but I still don't get it. In the following codec["var1"][1]
returns differently thanc$"var"[1]
.What are the actual uses for these three notations
[]
,[[]]
,$
?v <- vector("character", 5) v[1] <- 'a' v[2] <- 'a' v[4] <- 'a' v # [1] "a" "a" "" "a" "" c <- list(v, v) names(c) <- c("var1", "var2") c # $var1 # [1] "a" "a" "" "a" "" # $var2 # [1] "a" "a" "" "a" "" c["var1"][1] # $var1 # [1] "a" "a" "" "a" "" c$"var1"[1] # [1] "a"