创建数据框时的R name列

时间:2012-01-09 16:59:30

标签: r dataframe creation

我从数据框中取出列并使用它们来创建另一个数据框,但这些名称不断混杂而不是保留原始名称。我该如何避免这种情况?

> newDigit1 <- data.frame((security_id = rsPred1$security_id))
> head(newDigit1)
  X.security_id...rsPred1.security_id.
1                                    1
2                                    6
3                                    5
4                                    3
5                                    3
6                                    2

应该是这样的:

> newDigit1 <- data.frame((security_id = rsPred1$security_id))
> head(newDigit1)
                                security_id
1                                    1
2                                    6
3                                    5
4                                    3
5                                    3
6                                    2

3 个答案:

答案 0 :(得分:5)

这是因为您将括号((加倍。 比较

dfr <- data.frame(x = 1:5)
#Case 1
data.frame(x = dfr$x)
#Case 2
data.frame((x = dfr$x))

在案例1中,x = dfr$x是传递给data.frame函数的名称 - 值对。

在第2种情况下,(x = dfr$x)返回一个没有名称的向量,因此R发明了一个临时的向量,然后将该向量传递给data.frame函数。

答案 1 :(得分:4)

创建数据框时,不要使用双括号:

newDigit1 <- data.frame(security_id = rsPred1$security_id)

newDigit1 <- data.frame((security_id = rsPred1$security_id))

答案 2 :(得分:2)

只需删除一个括号:

newDigit1 <- data.frame(security_id = rsPred1$security_id)

现在应该正常工作!