Identifikasi objek R.


119

Saya sering berakhir dengan fungsi yang menghasilkan keluaran yang saya tidak mengerti jenis data keluarannya. Saya mengharapkan daftar dan akhirnya menjadi daftar daftar atau bingkai data atau sesuatu yang lain. Apa metode atau alur kerja yang baik untuk mengetahui tipe data keluaran saat pertama kali menggunakan suatu fungsi?

Jawaban:


126

Saya biasanya memulai dengan beberapa kombinasi dari:

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

yang sesuai berdasarkan apa yang terungkap. Misalnya, coba dengan:

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)

..etc.

Jika objadalah S3 atau S4 objek, Anda juga dapat mencoba methodsatau showMethods, showClass, dll Patrick Burns R Inferno memiliki bagian yang baik cantik di ini (detik # 7).

EDIT : Dirk dan Hadley menyebutkan str(obj)dalam jawaban mereka. Ini benar-benar jauh lebih baik daripada yang di atas untuk mengintip cepat dan bahkan mendetail ke suatu objek.


1
Saya tidak berpikir saya berhasil sejauh itu melalui R Inferno. Terima kasih telah mengirim saya kembali ke sana.
JD Long

3
Jika Anda belum melihatnya, "Objek S4 dalam 15 halaman atau kurang" [ stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf ] adalah bacaan bagus lainnya (dengan detail selengkapnya).
ars

Saya tidak melihat itu. Terima kasih untuk tautannya. Itu sepadan dengan harga tiket masuknya. :)
JD Long

Saya telah membuat fungsi utilitas kecil yang mengkodekan saran ini. Lihat tellMeAboutThis.r
eludom

65
str(x)

Itu saja yang perlu Anda ingat untuk 99% kasus.


2
str(x, max.level=1)dapat berguna jika x adalah ggplot berlapis-lapis!
PatrickT

7
str (UCTURE) sulit untuk diingat, karena saya terus memikirkan "string" tapi oh, sangat berguna. Hanya harus mengatakan STRUKTUR sepuluh kali.
Dmitri

13

Jika saya mendapatkan 'someObject', katakan via

someObject <- myMagicFunction(...)

maka saya biasanya melanjutkan

class(someObject)
str(someObject)

yang dapat diikuti oleh head (), summary (), print (), ... tergantung pada kelas yang Anda miliki.


Baru saja mencoba str (obj). Jauh lebih dari yang saya harapkan dari representasi string; sangat rapi! Terima kasih.
ars

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.