logo

Rでのメタデータとattrの参照方法 📂R

Rでのメタデータとattrの参照方法

概要

R で関数を使うとき、時々 attr(,"something") のようなデータに遭遇することがある。属性 は文字通り プロパティ を意味するが、Pythonのような言語とは異なり、Rではメタデータとしてデータに含まれる一種のコメントと考えてよい。しかし、R を使っていると時々このデータを参照したくなることがある。

20190605\_203648.png 例えば 標準化 を行った後、平均は attr(,"scaled:center") に、標準偏差は attr(,"scaled:scale") に残っている。もちろん、わざわざこれを参照して平均と標準偏差を計算する必要はないが、そうしたい場合はそうできる必要があるだろう。

20190605\_203706.png メタデータを参照する方法は attributes() 関数を使用することだ。attributes() はデータの次元を含むメタデータ全体を返してくれる。このように返された後は、 $ を使って簡単に参照できる。

20190605\_204020.png しかし、全体を確認するのではなく、正確に一つのメタデータだけを見るのであれば、上記のように attr() 関数を使って即座に望むメタデータを返すことも可能だ。

一方、attr() は逆にメタデータを挿入するのにも使用できる。次のように等差数列があるとき、attr() 関数で数列の属性が何か、初項が何か、公差が何かをデータそのものに挿入することができる。

20190605\_204039.png あくまでメタデータなので、sum() のような既存の関数をそのまま使ってもなかったことにして、思った通りにうまく動作することを確認できる。複雑なプログラミングをするなら積極的に使ってみる価値がある。

コード

set.seed(150421)
x<-rnorm(10)
z<-scale(x); z
 
attributes(z)
attributes(z)$'scaled:center'
attributes(z)$'scaled:scale\'
 
attr(z,"scaled:center")
attr(z,"scaled:scale")
 
temp <- 2*1:10-1
attr(temp, "type") <- "arithmetic"
attr(temp, "initial") <- 1
attr(temp, "common difference") <- 2
temp
sum(temp)