32

考虑以下代码

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$col1a = "col1"

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

4

2 回答 2

39

创建数据框后,您需要使用?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]

于 2013-11-01T16:18:55.120 回答
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]
于 2013-11-01T16:48:49.723 回答