科学の箱

科学・IT・登山の話題

R

data.frameについて注意すること

投稿日:

以前predict()について検証を進めていた際に、不可解なエラーが出てしまい、途中で調査をやめてしまったことがあった。

具体的なエラーは以下である。

> newGalton$child <- predict(lm1, data.frame(newGalton$parent))
 警告メッセージ: 
 'newdata' は 1000 個の行を持ちますが、見付かった変数は 928 の行数を持ちます:

その後コメントから動くスクリプトを掲示されたので比較してみた。

compare

右側がコメントでいただいたスクリプトである。このコメントについては下記から参照できる。

Rでのランダムデータ作成 – 上級編 (改)

さてこのスクリプトを比較してみるとdata.frameについてパラメータが異なっている。

自分のスクリプト

data.frame(newGalton$parent)

正しいスクリプト

data.frame(parent=parent.data)

data.frame()の使い方について確認をしたところ、データの指定は”カラム名=データソース”であることがわかった。間違っているほうではデータソースのみを指定しているために何らかの問題が発生していたかと推測される。

ちなみに少ない数でテストをしてみたところ、データソースのみ指定と、カラム名およびデータソース指定で違いは見られなかった。よってこの問題はデータに依存すると考えられる。

> data.frame(c(1,2,3))
  c.1..2..3.
1          1
2          2
3          3
> data.frame(id=c(1,2,3))
  id
1  1
2  2
3  3

メタ情報

inarticle



メタ情報

inarticle



-R

執筆者:


  1. foo-bar-baz より:

    > データソースのみ指定と、カラム名およびデータソース指定で違いは見られなかった。

    要素名(列名)が違います。
    最初の方は,定義を要素名に使おうとするが,要素名に使えない文字を含むので,そのような文字をドットに置き換えて,結果として c.1..2..3. という要素名が作られた。

    二番目の方は,指定した通り id という要素名になっている。

    なお,
    > id data.frame(id)
    のように,変数に割り当てられているベクトルに基づいてデータフレームを作る場合は,要素名が省略されるとベクトルの名前を要素名と解釈してくれます。
    > id data.frame(id)
    id
    1 1
    2 2
    3 3
    また,この場合でも,明示的に指定すれば,別の要素名を使うこともできます。
    > data.frame(NAME = id)
    NAME
    1 1
    2 2
    3 3

    ようするに,要素名で参照する場合は,当然,意図した要素名でないと不都合なのですね。

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Rによるやさしい統計学/4-母集団と標本

言葉の定義 推測統計、推定、点推定、区間推定、検定 標本、標本統計量、推定量、標本抽出、確率変数、確率分布、標本誤差 標本分布、標本統計量、平均、標準偏差、標準誤差 4.5 標本分布 標本平均の標本分 …

no image

Rで%>%を利用する。

rvestでスクレイピングをしようとしたら、%>%という記述が大量頻出。これ何かということで調べてみた。 https://stackoverflow.com/questions/24536154 …

no image

サンプルサイズによる有意の違い

こちらでサンプル数について指摘をいただいたのでサンプル数によりp値がどのように変わるかをみてみる。  1996 2012 15~19歳 9 9 20~24歳 12 17 25~29歳 10 18 30 …

no image

factorと数値型の変換-2

factorと数値型の変換でとりあえず区切り文字付き数字の変換方法についてめどは立ったが、そもそも区切り文字付き数字がなぜfactorになるのかがわからない。文字列にするにはパラメータを指定する必要が …

no image

Rによるやさしい統計学/5-統計的検定-2

練習問題-2 勉強時間と定期試験の点数についてデータを作成する。 study_time <- c(1, 3, 10, 12, 6, 3, 8, 4, 1, 5) point <- c(20 …

2014年5月
« 4月   6月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

side bar top



アーカイブ

カテゴリー