R nesne tanımlama


120

Genellikle çıktı veri türünü anlamadığım çıktı üreten bir işlevle son buluyorum. Bir liste bekliyorum ve sonunda bir liste listesi veya bir veri çerçevesi veya başka bir şey oluyor. Bir işlevi ilk kez kullanırken çıktı veri türünü bulmak için iyi bir yöntem veya iş akışı nedir?

Yanıtlar:


126

Genelde şunların bazı kombinasyonlarıyla başlarım:

typeof(obj)
class(obj)
sapply(obj, class)
sapply(obj, attributes)
attributes(obj)
names(obj)

neyin açığa çıktığına göre uygun şekilde. Örneğin, şunu deneyin:

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)

..vb.

Eğer objS3 veya S4 nesnesidir, ayrıca deneyebilirsiniz methodsya showMethods, showClassvb Patrick Burns' R Inferno bu konuda oldukça iyi bir bölümünü (sn # 7) sahiptir.

DÜZENLEME : Dirk ve Hadley str(obj)cevaplarında bahsediyor . Bir nesneye hızlı ve hatta ayrıntılı bir göz atmak için yukarıdakilerin herhangi birinden gerçekten çok daha iyidir.


1
R Inferno ile o kadar ileri gittiğimi sanmıyorum. Beni oraya geri gönderdiğiniz için teşekkürler.
JD Long

3
Henüz görmediyseniz, "15 sayfa veya daha az S4 nesneleri" [ stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf ] bir başka iyi okuma (daha fazla ayrıntıyla).
ars

Ben görmemiştim. Bağlantı için teşekkürler. Bu giriş ücretine değdi. :)
JD Long

Bu öneriyi kodlayan küçük bir yardımcı program işlevi oluşturdum. Bkz tellMeAboutThis.r
eludom

65
str(x)

Vakaların% 99'u için hatırlamanız gereken tek şey bu.


2
str(x, max.level=1)x çok katmanlı bir ggplot ise yararlı olabilir!
PatrickT

7
str (UCTURE) hatırlaması zor, çünkü "string" diye düşünmeye devam ediyorum ama oh, çok kullanışlı. Sadece on kez YAPI demek zorunda kalacak.
Dmitri

13

'SomeObject' alırsam, şunu söyleyin:

someObject <- myMagicFunction(...)

o zaman genellikle devam ederim

class(someObject)
str(someObject)

bunu sahip olduğunuz sınıfa bağlı olarak head (), brief (), print (), ... takip edebilir.


Sadece str (obj) denedim. Bir string gösteriminden beklediğimden çok daha fazlası; çok temiz! Teşekkürler.
ars

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.