У меня есть опыт работы с объектами S4
и их слотами, поэтому я знаю, как обращаться к определенным слотам и подслоям. Я хотел бы узнать, как "де-сложить" объект таким образом, что unlist
разделяет список S3
.
Моя ближайшая цель - сопоставить S4 с одной из моих игрушек, которая возвращает количество элементов объекта:
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)
}
(справедливо смеется мой код:-)). Я надеюсь, что не придется писать некоторую процедуру рекурсии, которая извлекает слоты по одному для их преобразования.
Изменить: я знаю, что object.size
вернет bytecount; не то, что я здесь.