[使用变量访问数据帧列

问题描述 投票:25回答:2

考虑以下代码

a = "col1"
b = "col2"
d = data.frame(a=c(1,2,3),b=c(4,5,6))

此代码产生以下数据帧

  a b
1 1 4
2 2 5
3 3 6

但是所需的数据帧是

  col1 col2
1 1    4
2 2    5
3 3    6

此外,我希望能够执行类似d$a的操作,然后从d$col1开始就可以抓取a = "col1"

如何告诉R "a"是变量而不是列名?

r dataframe
2个回答
33
投票

创建数据框后,需要使用?colnames。例如,您将有:

d = data.frame(a=c(1,2,3), b=c(4,5,6))
colnames(d) <- c("col1", "col2")

您还可以在创建数据框时命名变量。例如:

d = data.frame(col1=c(1,2,3), col2=c(4,5,6))

此外,如果您具有存储在变量中的列名,如

a <- "col1"

您不能使用$通过d$a选择列。 R将查找名称为a的列。相反,您可以执行d[[a]]d[,a]


10
投票

您可以这样操作

a = "col1"
b = "col2"
d = data.frame(a=c(1,2,3),b=c(4,5,6))

>d
  a b
1 1 4
2 2 5
3 3 6

#Renaming the columns
names(d) <- c(a,b)
> d
  col1 col2
1    1    4
2    2    5
3    3    6

#Calling by names
 d[,a]

推荐问答