Идентификация объекта R

Я часто получаю функцию, производящую вывод, для которой я не понимаю тип выходных данных. Я ожидаю список, и он заканчивается списком списков или фреймом данных или чем-то еще. Какой хороший метод или рабочий процесс для определения типа выходных данных при первом использовании функции?

Ответ 1

Обычно я начинаю с некоторой комбинации:

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 или showMethods, showClass и т.д. Patrick Burns R Inferno имеет довольно хороший раздел по этому вопросу (секция № 7).

EDIT: Дирк и Хэдли упоминают str(obj) в своих ответах. Это действительно намного лучше, чем любой из вышеперечисленных, для быстрого и подробного просмотра объекта.

Ответ 2

str(x)

Все, что вам нужно запомнить в 99% случаев.

Ответ 3

Если я получаю "someObject", скажем, через

someObject <- myMagicFunction(...)

то я обычно продолжаю

class(someObject)
str(someObject)

за которым могут следовать head(), summary(), print(),... в зависимости от вашего класса.

Ответ 4

attributes(someObject) 

Также может быть полезно