web-dev-qa-db-ja.com

Rオブジェクトの識別

私はしばしば、出力データ型を理解していない出力を生成する関数になります。私はリストを期待していますが、それはリストのリストやデータフレームなどになります。最初に関数を使用するときに出力データ型を把握するための良い方法またはワークフローは何ですか?

113
JD Long

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

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)

..等。

objがS3またはS4オブジェクトの場合、methodsまたはshowMethodsshowClassなどを試すこともできます。PatrickBurns ' R Inferno hasこれについてはかなり良いセクションです(セクション7)。

編集:DirkとHadleyは回答でstr(obj)に言及しています。オブジェクトを素早く、さらに詳細に覗くためには、上記のどれよりもはるかに優れています。

120
ars
str(x)

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

59
hadley

「someObject」を取得した場合、次のように言います

someObject <- myMagicFunction(...)

それから私は通常

class(someObject)
str(someObject)

これには、所有するクラスに応じて、head()、summary()、print()、...が続きます。

12
attributes(someObject) 

役に立つこともあります

7
Josh Reich