Ich habe etwas Erfahrung mit S4
Objekte und ihre Steckplätze, so dass ich weiß, wie auf bestimmte Steckplätze und Sub-Steckplätze zugreifen. Was ich gerne lernen würde, ist, wie man ein Objekt in der Weise "entschlitzt", wie unlist
eine S3
Liste auseinander nimmt.
Mein unmittelbares Ziel ist es, ein S4 Gegenstück zu einem meiner Spielzeug zu haben, die die Anzahl der Elemente eines Objekts zurückgibt:Gibt es ein S4, das unlist() entspricht?
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)
}
(ohne Messe in meinem Code :-) lacht). Ich hoffe, dass ich keine Rekursionsroutine schreiben muss, die Slots nacheinander extrahiert, um sie zu konvertieren.
Edit: Ich weiß object.size
wird den Bytecount zurückgeben; Nicht, was ich hier will.
Sie vielleicht einen Blick auf 'str()' ('utils ::: str haben wollen .default 'wirklich) - beide Ergebnisse, wenn sie auf S4-Objekte angewendet werden, und der Code, der verwendet wird, um durch alle Slots eines S4-Objekts zu gehen. –