cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

🔰データフレームのオブジェクト名はどう決めていますか?

Rで何らかの解析作業をおこなうとき、データフレームクラスのオブジェクトを使うことが多いと思う。その際、どういう名称のオブジェクトを作っているのか。自分はdf派だが、パイセンがdatにしていたり先日slack上で見た @hoxo_m さんのコードでもdatが使われていたりで、以外とマイナーなのか?と興味が出てきたので調べてみることにした。

GitHubでの検索結果

GitHubにあげられている拡張子.rあるいは.Rmdのファイルを対象に次のオブジェクト名を検索してみた。なお関数内での定義や余計なファイルも含まれているので正確ではないのでご注意。

name hits url
dat 7141件 URL
data 73146件 URL
df 14991件 URL

f:id:u_ribo:20150824125910p:plain

...これはやはりdata.frameのオブジェクト名以外のものが多く入っているためか?

Twitter上での声

収集できた範囲で。鍵アカウントの人は文字だけ引用。

dfもdataもdatもオブジェクト名に使っていない。

dfはやめよう

そんなことを気にしていたら寝耳に水な発言が。

data()はパッケージ内のデータセットを呼び出したりする際に使うので知っていたが、df()については知らかなった。というわけでオブジェクトを見つけ出すaproposを使って探してみる。

apropos(what = c("^df$"))
## [1] "df"
apropos("$dat$")
## character(0)
apropos("^data$")
## [1] "data"

datだけが見つからなかった。では、dfdataはどこで使われているのだろう(?dfとかやれば済む話だが、普段使わない関数findを使ってみる)。

find(what = "df")
## [1] "package:stats"
find("data")
## [1] "package:utils"

dfはF分布用の関数であった。使う機会は個人的には限られているが、ベースパッケージの関数名と衝突してしまうのはよろしくない気がする。

Slackで有識者に聞いてみた

Rでデータフレームを作成する際、オブジェクト名はどのようにしていますか? 候補: df, dat, data, other

上記の設問に対し、リスペクトできるRユーザーに投票してもらった結果...(複数回答あり)。

f:id:u_ribo:20150824125842p:plain

other派な人たちは

  • d_*
  • df_*

とすることが多いらしい(アスタリスクの部分にはデータの構造を示す名称が入る)。なるほど。

dfでは上述の関数名と混同してしまうし、ファイル名やデータソースからデータセットの中身を推測するよりも、具体的にデータを表わす名称にしたほうがが良さそうだ。これからはdf_*でいく所存