2011-01-17 18 views
64

R'de bir slotun ne olduğunu bilen var mı?R: Yuvalar nedir?

Anlamının açıklamasını bulamadım. Bir yinelemeli tanımı olsun: "Yuva işlevi döner veya nesnelerin bazı alanlarda koyuldu bilgileri"

Yardım mutluluk duyacağız, Teşekkür -

+0

Bu, 'slot()' fonksiyonundaki yardımdan - bir slotun ne olduğunu, sadece bunlara nasıl erişileceğini belgelemek anlamına gelmez. –

cevap

66

Yuvaları S4 nesnelere bağlı Alley. Bir yuva, bir nesnenin bir parçası, öğesi veya "özelliği" olarak görülebilir. Bir araba nesnesinin olduğunu varsayalım, daha sonra "fiyat", "kapı sayısı", "motor türü", "kilometre" yuvalarına sahip olabilirsiniz.

Dahili olarak, bu liste olarak gösterilir. Bir örnek: Burada

setClass("Car",representation=representation(
    price = "numeric", 
    numberDoors="numeric", 
    typeEngine="character", 
    mileage="numeric" 
)) 
aCar <- new("Car",price=20000,numberDoors=4,typeEngine="V6",mileage=143) 

> aCar 
An object of class "Car" 
Slot "price": 
[1] 20000 

Slot "numberDoors": 
[1] 4 

Slot "typeEngine": 
[1] "V6" 

Slot "mileage": 
[1] 143 

, fiyat, numberDoors, typeEngine ve mesafe S4 sınıfında "Araba" nin yuvaları bulunmaktadır. Bu önemli bir örnektir, gerçekte yuvaların kendileri yine karmaşık nesneler olabilir.

yuvalar çeşitli şekillerde ulaşılabilir:

> [email protected] 
[1] 20000 
> slot(aCar,"typeEngine") 
[1] "V6"  

ya da belirli bir yöntemin oluşturulması yoluyla

(ekstra belgelere bakın).

S4 programlama hakkında daha fazla bilgi için bkz. this question. Eğer konsept hala size belirsiz geliyorsa, Nesne Yönelimli Programlamaya genel bir giriş yardımcı olabilir. PS: Adlandırılmış değişkenlere/öğelere erişmek için $'u kullandığınız datafram ve listelerdeki farka dikkat edin. tüm $ -accessible isimleri

Slots: 

     The data contained in an object from an S4 class is defined 
     by the _slots_ in the class definition. 

     Each slot in an object is a component of the object; like 
     components (that is, elements) of a list, these may be 
     extracted and set, using the function ‘slot()’ or more often 
     the operator ‘"@"’. However, they differ from list 
     components in important ways. First, slots can only be 
     referred to by name, not by position, and there is no partial 
     matching of names as with list elements. 
     .... 
+2

+1 Güzel cevap Joris. 'Slot (aCar,' price ') 'gibi bir örnek eklemek isteyebilirsiniz, aynen op,' slot()' fonksiyonuna bakarken esp gibi başka bir kullanımda olduğu gibi, –

+0

Güzel fikir, Gavin, yapacak. –

+0

Teşekkürler, cevabınız çok yardımcı oldu! – user573347

10

, yuvaları üzerinde aşağıdakileri içeren ?Classes, okuma deneyin Bir nesnenin tüm yuvalarını listeleyen karmaşık bir değişken, bu nedenle çok

.

Görüntüleme nesneniz, görüntüleme zevkiniz için hangi güzelliklerin içerdiğini keşfetmek için çok kullanışlıdır.

15

Sadece names(variable) olarak listeleri: Eğer kaynaklara @Joris noktaları, artı kendi cevabını ek olarak

İlgili konular