Rオブジェクトの識別


119

多くの場合、出力データ型がわからない出力を生成する関数になってしまいます。私はリストを期待しています、そしてそれはリストのリストまたはデータフレームまたは他のものになるでしょう。関数を最初に使用するときに出力データ型を理解するための良い方法またはワークフローは何ですか?

回答:


126

私は通常、いくつかの組み合わせから始めます:

typeof(obj)
class(obj)
sapply(obj, class)
sapply(obj, attributes)
attributes(obj)
names(obj)

明らかにされたものに基づいて、必要に応じて。たとえば、次のように試してください。

obj <- data.frame(a=1:26, b=letters)
obj <- list(a=1:26, b=letters, c=list(d=1:26, e=letters))
data(cars)
obj <- lm(dist ~ speed, data=cars)

..等。

場合はobjS3またはS4オブジェクトで、あなたも試すことができmethodsたりshowMethodsshowClassなどパトリック・バーンズRインフェルノはこの(秒#7)にかなり良い部分を持っています。

編集:ダークとハドリーはstr(obj)答えで言及します。オブジェクトをすばやく詳細に覗くには、上記のどれよりもはるかに優れています。


1
私はRインフェルノを通してそんなに作ったとは思わない。戻ってきてくれてありがとう。
JD Long

3
まだご覧になっていない場合は、「15ページ以下のS4オブジェクト」[ stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf ]を読むとよいでしょう(詳細)。
ARS

私はそれを見ていませんでした。リンクをありがとう。それは入場料の価値があった。:)
JD Long

この提案をエンコードする小さなユーティリティ関数を作成しました。tellMeAboutThis.rを
eludom

64
str(x)

99%のケースで覚えておく必要があるのはそれだけです。


2
str(x, max.level=1)xが多層のggplotの場合に便利です。
PatrickT 2015年

7
str(UCTURE)「文字列」を考え続けるので覚えにくいですが、とても便利です。構造を10回言わなければならないでしょう。
ドミトリ

13

「someObject」を取得した場合は、

someObject <- myMagicFunction(...)

それから私は通常続行します

class(someObject)
str(someObject)

使用するクラスに応じて、head()、summary()、print()などが続きます。


str(obj)を試しました。文字列表現から予想をはるかに上回った。すごくすっきり!ありがとう。
ARS

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.