List
R语言中各组件的名称叫做标签(tags),访问列表有3种方法:
- j$salary 通过标签名字访问,只要不引起歧义,可以只写出前几个字母。
- j[['sal']] 夹在两个中括号时引号里的标签名字要写全。
- j[[2]] 亦可以通过在列表中的位置访问。
这三种方法得到的都是对应组件内容的类型。
如果只加一个中括号,得到的是组件,类型为向量。
- 需要注意的是 [ ] 可以提取多个组件,但 [[ ]] 一次只能提取列表的一个组件内容。
> j <- list(name = 'Joe', salary = 5500, union = T)
> j$salary
[1] 5500
> j$sal
[1] 5500
> j[['sal']]
NULL
> j[['salary']]
[1] 5500
> j[[2]]
[1] 5500
> j[2]
$salary
[1] 5500
> j[1:2]
$name
[1] "Joe"
$salary
[1] 5500
> j[[1:2]]
Error in j[[1:2]] : subscript out of bounds
Dataframe
数据框的访问的用法与列表相似,可以把数据框看作由多个长度相同的列表组成的,所以访问方法同样适用。
> d
kids ages
1 Jack 12
2 Jill 10
> d$ki
[1] "Jack" "Jill"
> d$kids
[1] "Jack" "Jill"
> d[['kid']]
NULL
> d[['kids']]
[1] "Jack" "Jill"
> d[[1]]
[1] "Jack" "Jill"
> d[1]
kids
1 Jack
2 Jill
> d[,1]
[1] "Jack" "Jill"
- 注意 [[ ]] 虽然只能提取一个列表的内容,但是 [[2: 3]] 表示取第二个列表中第三个元素。
(可以把它看作先取第一层,再取第二层。)
> d[[1:2]]
[1] "Jill"
> d[[2:1]]
[1] 12