2

18列のdata.frameyがあります。最後に追加したのは

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 に答える