我有一些使用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
会返回字节数;不是我在这里追求的。