2

我有一个y包含 18 列的 data.frame:我通过添加的最后一个

y$ced <- Limt

其中 Limt 是拟合长度的数值向量。现在发生这种情况:

colnames( y )    
...
[13] "is_term"   "is_cover"  "is_other"  "CoRI"      "Prot"      "ced"
                                                                  ^^^

最后一个 colname 完全符合预期。但:

head( y, 1 )
....
  is_price is_term is_cover is_other CoRI Prot Limt
1                                       0    0 5000
                                               ^^^^

对我来说,完全出乎意料的是,原始变量名称显示为标题。

y$ced提出了预期的数字,而

y$Limt
NULL

可能这是应该的,但我没有找到解释。我将非常感谢提示在哪里查看为什么会这样,以及如何获得所需的信息ced。解决这个问题很容易,但我真的很想知道......

我试过colnames( y )[18] <- "ced"但这个死无济于事。

sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-pc-linux-gnu (64-bit)

可重现的示例-不确定这是否足够好,但我想到的唯一一件事:

> x <- head( y$ced )
> x
   Limt
1  5000
2 10000
3 20000
4 40000
5  5000
6 10000
> dput( x )
structure(list(ced = structure(list(Limt = c(5000, 10000, 20000, 
40000, 5000, 10000)), .Names = "Limt", row.names = c(NA, 6L), class = "data.frame")), .Names = "ced", row.names = c(NA, 
6L), class = "data.frame")

我看到.Names那里的东西,大概就是这样。我使用 RSQLite 从数据库文件中获取数据,是这样吗?

4

1 回答 1

2

最有可能的是,您并没有像您所说的那样分配向量,而是分配了一个 data.frame:

y <- head(cars, 3)
Limt <- data.frame(Limt = 1:3)
y$ced <- Limt
names(y)
# [1] "speed" "dist"  "ced"
y
#       speed dist Limt
# 1     4    2    1
# 2     4   10    2
# 3     7    4    3

str(y)
# 'data.frame': 3 obs. of  3 variables:
#  $ speed: num  4 4 7
#  $ dist : num  2 10 4
#  $ ced  :'data.frame':    3 obs. of  1 variable:
#   ..$ Limt: int  1 2 3

如果您分配一个向量,它将按预期工作:

y$ced <- Limt$Limt
y 
#   speed dist ced
# 1     4    2   1
# 2     4   10   2
# 3     7    4   3
于 2012-12-12T11:05:46.137 回答