最近使用R处理数据表,涉及访问data.frame中变量的问题,现总结一些相关方法,提出共享参考。
比如: 一个含11个变量的数据框da
z01 z02 z03
1 367 161 84
2 320 130 74
3 547 228 112
4 450 215 95
5 446 185 99
6 417 206 98
7 396 183 92
8 430 186 102
访问da中第一个变量z01, 有几种可能的方法
(1)用 双中括号+变量名加引号 访问 ,即da[[“z01”]],将得到一个类型为向量的访问结果,这种方式较正规,可以实现“宏替换”方式访问,如下所示
> da[['z01']]
[1] 367 320 547 450 446 417 396 430
实现“宏替换”访问如下
> aa='z01'
> da[[aa]]
[1] 367 320 547 450 446 417 396 430
方法1的变形是da[[1]],但不能实现“宏替换”。
(2)用 $+变量名 访问,即da$z01。变量名不加引号,访问结果与(1)相同,即得到一个向量。这种方式简便明了,但不能宏替换。
> da$z01
[1] 367 320 547 450 446 417 396 430
(3)用 单引号+双下标 访问,即da[,1],得到与(1)相同的结果。
> da[,1]
[1] 367 320 547 450 446 417 396 430
(4)用 单引号+单下标 访问,即da[1],得了z01这个分量,与前面几种访问方式不同的是,这种访问方式得到的数据类型为data.frame。这种方式的变形是da[‘z01’],得到相同的结果。
> da[1]
z01
1 367
2 320
3 547
4 450
5 446
6 417
7 396
8 430
在上面几种方法的基础上还可以组合出其它方法,结合attach()还可以使访问更方便。我的使用习惯是,编程中常使用方式1,因为它为动态访问数据框中的变量提供了方便,交互环境中常用方式2。上面的变量访问方式也同样适用于列表类型。