Rで統計以外の計算の情報があまり見つからない気がする…
なんらかの理由によって測定値がなかったりして、付近の値で代用する際などに便利なapproxfun()
について、使い方をteramonagiさんのブログで覚えたのですが、
このapproxfun()
関数自体は戻り値として関数を返してくるんだけど、一体どこにデータを隠し持ってるんだ…?と思って調べてみたのです。
結果としては環境オブジェクト中に隠し持っていました(別に隠してはいない)
# 毎度おなじみのiris head(iris$Sepal.Length) #> [1] 5.1 4.9 4.7 4.6 5.0 5.4 # approxfunに与えると関数が返ってくる。 approxfun(iris$Sepal.Length) #> function (v) #> .approxfun(x, y, v, method, yleft, yright, f) #> <bytecode: 0x0000000015abe7d8> #> <environment: 0x00000000080519e0> # 値をあたえる。1番目の値が返ってくる。 approxfun(iris$Sepal.Length)(1) #> [1] 5.1 # 補間される。1.2番目相当の値 approxfun(iris$Sepal.Length)(1.2) #> [1] 5.06 # ちょうど1番目と2番目のまんなかの値 approxfun(iris$Sepal.Length)(1.5) #> [1] 5
さて、この関数の返却値の関数を直接見てもどこにデータがあるかわかりませんが、先にprintしたときにenvironmentが表示されていますね。これを確認します。つまりこんな感じ。
View(environment(approxfun(iris$Sepal.Length)))
で、こんな感じ
ちゃんとデータが入っていますね。この環境中にデータを保持しているようなので、この生成された関数を他の変数に代入するなどして持っておけば、元になったデータ自体をrm()
で削除しても大丈夫そう(一応動いた)です。この環境の値は(iris$Sepal.Lengthのコピーということなのでしょう{^1]。
これで安心してapproxfun()
が使えるぞい…!
Enjoy!!