R对象识别

JD *_*ong 114 r object

我经常以产生输出的函数结束,我不理解输出数据类型.我期待一个列表,它最终成为列表或数据框或其他内容的列表.首次使用函数时,确定输出数据类型的好方法或工作流程是什么?

ars*_*ars 120

我通常从一些组合开始:

typeof(obj)
class(obj)
sapply(obj, class)
sapply(obj, attributes)
attributes(obj)
names(obj)
Run Code Online (Sandbox Code Playgroud)

根据所揭示的内容适当.例如,尝试:

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)
Run Code Online (Sandbox Code Playgroud)

..等等.

如果obj是S3或S4对象,则也可以尝试methodsshowMethods,showClass等帕特里克伯恩斯- [R地狱对这个(秒#7)相当不错的部分.

编辑:Dirk和Hadley str(obj)在他们的答案中提到.它真的比上面的任何一个更好,可以快速,甚至详细地查看对象.

  • 如果您还没有看到它,"15页或更少的S4对象"[http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf]是另一个很好的阅读(与更多细节). (3认同)

had*_*ley 59

str(x)
Run Code Online (Sandbox Code Playgroud)

99%的案例都需要记住这一切.

  • str(UCTURE)很难记住,因为我一直在想"字符串"但是哦,非常有用.只需要说结构十次. (5认同)
  • 如果 x 是多层 ggplot,``str(x, max.level=1)`` 会很有用! (2认同)

Dir*_*tel 12

如果我得到'someObject',请说通过

someObject <- myMagicFunction(...)
Run Code Online (Sandbox Code Playgroud)

然后我经常继续

class(someObject)
str(someObject)
Run Code Online (Sandbox Code Playgroud)

可以跟随head(),summary(),print(),...取决于你拥有的类.


Jos*_*ich 7

attributes(someObject) 
Run Code Online (Sandbox Code Playgroud)

也可以有用