色々なパターンで確認してみる。
以前、RStudioでView()での表示のさせ方が変わった件について書きました。
しかし、改めて読み直すと内容が薄いような…。
と、いうことで。
あらためてView()の関数によって各オブジェクトがどのように表示されるのか?また、表示された状態から何が出来るのか?を見ていこうと思います。
ここに至るまでの話は下記の記事を参照ください。
残るはlistの表示の件。
たとえばこんなデータを表示してみる。
View(list(a=1:4, b=letters[1:3], c=seq(0.1, 0.5, by=0.1)), "list")
これは1回目のViewの話で書いたように、タブに"list"という名前がついています。
ちょっと属性つけてみましょう。
a <- list(a=1:4, b=letters[1:3], c=seq(0.1, 0.5, by=0.1)) attr(a$a, "xxx")<- "hoge" attr(a$b, "yyy")<- "foo" View(a, "list_attr")
Show Attributeにチェックを入れると、今つけた属性が見れますね1。
バグなのか仕様なのか、このボタンの左のアイコンを押すとこのPaneが分離できますが、元に戻すとShow Attributeのチェックが外れてしまいます。デフォルト状態に戻るということですかね。
さて、まぁ大体見ればわかるのですが、(▷)のアイコンを押すと展開されます。(▽)になっているのは展開済み。
ここではトップのlist_attr
が長さ3のlist
であること、その要素にa,b,cがあり、aはinteger
として4要素、1,2,3,4が含まれ、その属性は長さ1のlist
でその名前はxxx
、値はcharacter
でhogeであることが確認できるわけです。凄い!便利!
environment Paneの記事で書いた通り、この中身はそちらでもstr()
で見た結果と同じものが見れます。当たり前ですが同じ構造であることが確認できますね。
さて、View()
で見ているlist_attr
の方、画像の右下にある[⇐]のアイコンを押すと、
list_attr[["c"]]
のようにコンソールに現れます。この、選択した要素を抜き出すための関数をRStudioが作ってくれる、という点がポイントです。もうstr()
の結果とにらめっこして頑張って追う必要はもうないのです。
やりました…!
が、ちょっと待ってください。ここで値を取り出そうとすると、
list_attr[["c"]] #> Error: object 'list_attr' not found
と、エラーとなってしまいます。これはエラーの内容の通り、list_attr
なんてオブジェクトはいないから、です。Environment Paneを見ても確かにいませんね。これはView()
で開くときに、タブに名前を付けたから起きています。
ということで、list形式のデータを見るときに、Viewで名前を付けるのは(現時点では)やめた方が良さそうです。 これは要望出せば改善してもらえる気がする...
もう一点。このViewで表示される内容、この🔍のアイコンがついた状態で表示されている場合に、 再表示(aの内容を書き換えてから、タブlist_attr
がある状態でView(a, "list_attr")
する)しても表示が更新されないようです。 タブを一旦閉じてから再度Viewで開いてください。この点も気づかないとハマるので要注意。
さて、あらためてaをそのままView()
で表示させて、要素aの属性のアイコン[⇐]を選択して…
View(a) attributes(a[["a"]]) #> $xxx #> [1] "hoge"
出ました!
というわけで、list形式のデータ(S3でも、environmentでも可です)の構造を見やすく、下位のデータの選択・取り出しが容易になるView関数についての紹介、とりあえずこれで一旦区切りです。
これでrepurrrsive
パッケージに収めらえているような複雑なデータ形式や、ggplot2ライブラリで生成されるオブジェクトが一体どのような構造で、何をしたら何が変わるのか?を追いかけやすくなるのでは?と思います。
RStudio IDE、これ単体だけでもデータがかなり見れるようになっていてとても良いですね!
Enjoy!!
このお話には続きがあります。よろしければどうぞ。
-
こういうときに定番の列名とかあった方が良いですね?考えておきます…。↩