2009-07-24 54 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%的情况下所需要记住的。