#列表的子集 Subsetting List
#[[]] / $ / [[]][] / [[]][[]]
#嵌套列表 /不完全匹配(partial matching)
> x <- list(id=1:4,height=170,gender="male")
> x[1] #找第1列的元素
$`id`
[1] 1 2 3 4
> x["id"] #两个函数作用相同
$`id`
[1] 1 2 3 4
> x[[1]]
[1] 1 2 3 4
> x[["id"]]
[1] 1 2 3 4
> x$id
[1] 1 2 3 4
> x[c(1,3)] #找出第1列和第3列的元素
$`id`
[1] 1 2 3 4
$gender
[1] "male"
> y <- "id"
> x[["id"]]
[1] 1 2 3 4
> x[[y]]
[1] 1 2 3 4
> x$id
[1] 1 2 3 4
> x$y #$只能用于引号名字而不能用于名字里包含的变量
NULL
> x <- list(a=list(1,2,3,4),b=c("Monday","Tuesday"))
> x
$`a`
$`a`[[1]]
[1] 1
$`a`[[2]]
[1] 2
$`a`[[3]]
[1] 3
$`a`[[4]]
[1] 4
$b
[1] "Monday" "Tuesday"
> x[[1]]
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4
> x[[1]][[2]]
[1] 2
> x[[1]][2]
[[1]]
[1] 2
> x[[c(1,3)]]
[1] 3
> x[[c(2,2)]]
[1] "Tuesday"
> l <- list(asdfghj=1:10)
> l$asdfghj
[1] 1 2 3 4 5 6 7 8 9 10
> l$a #不完全匹配
[1] 1 2 3 4 5 6 7 8 9 10
> l[["a"]]
NULL
> l[["a",exact=FALSE]] #嵌套做不完全匹配时后面加"exact=FALSE"
[1] 1 2 3 4 5 6 7 8 9 10
> X <- list(asdfghj=1:10,b=1:2,aaa=3:5)
> x$a
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4
> x[["a",exact=FALSE]]
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4
> x$as
NULL