从给定数据框中指示变量的另一种方法是什么?

时间:2016-04-02 01:01:09

标签: r

我的问题似乎很容易,但很难描述,请参阅下面的代码。让我们先创建一个数据框:

Length<-c(10,11,9,8,10)
Width<-c(5,5.4,4.7,5.6,6.1)
Layer<-c(8,10,12,10,14) 
data<-data.frame(Length, Width, Layer)
data
    Length Width Layer
1     10   5.0     8
2     11   5.4    10
3      9   4.7    12
4      8   5.6    10
5     10   6.1    14

众所周知,如果我们想要从给定的数据框中指出变量,我们需要输入如下:

data$Layer
[1]  8 10 12 10 14

然而,当有很多变量时,它变得耗时,所以我想找到其他方法:

var_list<-c("Length", "Width", "Layer")
var_list
[1] "Length" "Width"  "Layer" 
> var_list[1]
[1] "Length"
> var_list[2]
[1] "Width"
> var_list[3]
[1] "Layer"

因此创建了一个变量列表,我想使用它来指示数据集但是徒劳无功:

> data$var_list
  NULL
> data$var_list[1]
  NULL
> data$var_list[2]
  NULL
> data$var_list[3]
  NULL

希望我的描述足够清晰,并提前感谢任何想法或建议。

1 个答案:

答案 0 :(得分:2)

1:您可以通过names()函数获取列的名称:

names(data);
## [1] "Length" "Width"  "Layer"

2:您可以使用`[[`()操作提取单个列:

data[['Layer']];
## [1]  8 10 12 10 14
data[[names(data)[3L]]];
## [1]  8 10 12 10 14

3:但是既然你最终在名字向量中使用数字索引,我建议你只在原始data.frame上使用数字索引:

data[[3L]];
## [1]  8 10 12 10 14