Mam pewne doświadczenie w pracy z obiektami S4
i ich gniazdami, więc wiem, jak uzyskać dostęp do konkretnych gniazd i pod-slotów. Chciałbym się nauczyć, jak "rozdzielić" obiekt w taki sposób, aby unlist
rozebrał listę na S3
.
Moja bezpośrednim celem jest mieć odpowiednika S4 do jednego z moich zabawek, które zwraca liczbę elementów obiektu:Czy istnieje odpowiednik S4 dla opcji unlist()?
lssize<-function(items){
if (any(sapply(sapply(items,get),typeof)=='closure')){
warning('Closures in list, will ignore.')
items<-items[(sapply(sapply(bar,get),typeof)=='closure')!=TRUE]
}
sizes<-sapply(sapply(sapply(sapply(items,get,simplify=F), unlist,simplify=F), as.vector,simplify=F), length)
return(sizes)
}
(bez targach śmieje się mój kod :-)). Mam nadzieję, że nie będę musiał pisać rutyny rekurencyjnej, która wyodrębnia automaty po jednym na raz, aby je konwertować.
Edytuj: Wiem, że object.size
zwróci wartość z bajtów; nie to, po co tu jestem.
Czasami warto spojrzeć na 'str()' ('utils ::: str .default' really) - zarówno jego wyniki, gdy są stosowane do obiektów S4, jak i kod używany do przechodzenia przez wszystkie sloty obiektu S4. –