2011-08-05 12 views
9

programında ayırt etme x numaralı bir nesne veriliyorsa, S3 veya S4 (veya "diğer") olup olmadığını sınıflandırmanın bir yolu var mı? is.object() ve isS4()'a baktım ve bir şeyin bir nesne (veya değil) olduğunu ve bir S4 nesnesinin (veya değil) olduğunu belirledim. Ancak, S3 nesnelerinin S4 nesnesi olmayan tüm nesnelerin tamamlayıcısı olduğu görünmüyor.S3 ve S4 nesnelerini R

Bu nedenle, bu ödevler program aracılığıyla nasıl yapılabilir?

a = as.factor(1:3) 
is.object(a) # TRUE 
isS4(a) # FALSE 

o a bir S3 nesne olduğu anlamına mı geliyor: İşte

kafamı kurcalayan, is.object() için yardım alınan şeyin bir örnektir? onun aslında bir hızlı yüzden, şey class özelliği sahip olduğunda alır ayarlamak bazı sihirli NESNE biraz

is.object(foo) & !isS4(foo) 

is.object çekleri: o bir nesnedir ve bir S4 değilse

cevap

10

o zaman bir S3 olduğunu Bir S3 nesnesini tanımlayan any(names(attributes(foo))=="class") yapmanın yolu.

+0

Peki bu oldukça cevap veriyor. :) – Iterator

+0

Şimdi bir “is3” olması gerektiğini düşünüyorum. Olduğu gibi, (A &! B) 'mantıksal işlemine bir ödeve dayanarak 'A' ve 'B' (örn. Bazı gelecek" S5 "lerle karşılıklı olarak çift yönlü bir" C "ye izin vermez. Ne S3 ne de S4 sınıfı. Şimdilik, bu işe yarıyor ama Y2K tipi bir hatayı doğru yürüdüğümü hissediyorum. :( – Iterator