Я часто получаю функцию, производящую вывод, для которой я не понимаю тип выходных данных. Я ожидаю список, и он заканчивается списком списков или фреймом данных или чем-то еще. Какой хороший метод или рабочий процесс для определения типа выходных данных при первом использовании функции?
Идентификация объекта 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)
Также может быть полезно