2009-07-24 100 views
97

我經常以一個產生輸出的函數結束,但我不明白輸出數據類型。我期待一個列表,它最終成爲一個列表或數據框或其他東西的列表。在首次使用函數時,找出輸出數據類型的好方法或工作流程是什麼?R對象標識

回答

107

我通常先有自己的一些組合:

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對象,你也可以嘗試methodsshowMethodsshowClass等帕特里克·伯恩斯R Inferno對這個(秒#7)一個不錯的部分。

編輯:德克和哈德利在他們的答案中提到str(obj)。它真的比上述任何一個更好地快速甚至詳細地查看對象。

+1

我不認爲我通過R Inferno做了那麼多。謝謝你讓我回到那裏。 – 2009-07-24 20:50:36

+2

如果你還沒有看到,「15頁或更少的S4對象」[http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf]是另一個好的閱讀(與更多細節)。 – ars 2009-07-24 23:02:34

10

如果我得到 'someObject',通過

someObject <- myMagicFunction(...) 

說,然後我通常

class(someObject) 
str(someObject) 

可隨後頭部進行(),摘要(),印刷()。 ..取決於你擁有的課程。

+0

剛試過str(obj)。比我預期的字符串表示方式更多的方式;井井有條!謝謝。 – ars 2009-07-26 21:36:01

6
attributes(someObject) 

也很有

47
str(x) 

這是99%的情況下所需要記住的。