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 code c["var1"][1]
returns differently than c$"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"
All these techniques give different outputs.
List[ ]
returns a list - a sub-list of the original list List
.
List[[ ]]
returns the single object stored at that position in List
.
If it is a named list, then
List$name
and List[["name"]]
return the same thing;
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"