通过调用列名将列名提取到向量

Oll*_*i J 6 r dataframe

我们data.frame这里有:

df <- data.frame(x1=rnorm(20),x2=rnorm(20),x3=rnorm(20),x4=rnorm(20),x5=rnorm(20),x6=rnorm(20),x7=rnorm(20),x8=rnorm(20),x9=rnorm(20),x10=rnorm(20),x11=rnorm(20),x12=rnorm(20),x13=c(2,1,1,2,2,1,2,1,2,2,1,1,2,1,2,2,1,2,1,1))
Run Code Online (Sandbox Code Playgroud)

我知道我可以轻松地查看列名

colnames(df)
[1] "x1"  "x2"  "x3"  "x4"  "x5"  "x6"  "x7"  "x8"  "x9"  "x10" "x11" "x12" "x13"
Run Code Online (Sandbox Code Playgroud)

打印上面的行。

我还可以得到一列的名称colnames(df[...]),为例

colnames(df[2])
[1] "x2"
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何通过colnames()使用列名调用来提取单个列名,例如

colnames(df$x2)
NULL
Run Code Online (Sandbox Code Playgroud)

我敢打赌,解决方案非常简单,但我只是没有找到有关此问题的任何有用信息。

Bac*_*lin 10

单括号生成数据框的子集,只有一列。因此,新数据框的唯一一列有一个名称。

> class(df[2])
[1] "data.frame"
> colnames(df[2])
[1] "x2"
Run Code Online (Sandbox Code Playgroud)

双括号[[或美元$提取单列的内容,在您的情况下是数字。因此它没有任何列名,因为它不是数据框。

> class(df$x2)
[1] "numeric"
Run Code Online (Sandbox Code Playgroud)

如果您只想要第二列的名称,您应该这样做

> colnames(df)[2]
[1] "x2"
Run Code Online (Sandbox Code Playgroud)