0
我正在尝试根据其中一个元素的值从对象列表中创建一个子列表。例如,我创建了一个对象类:有没有办法从R中的对象列表中拉取值列表?
setClass("Foo",representation(Attrib = "vector"))
然后,我创建这个类的对象列表:
CreateData = function() { new("Foo",Attrib=sample(0:1,5,replace=TRUE)) }
FooSet = CreateData()
for(i in 1:20) { FooSet=c(FooSet,CreateData()) }
现在我想创建列表中包含集的子集,其中Attrib的第一个元素是一个。理想情况下我会说这样做:
FooSubset = FooSet[[email protected][1] == 1]
然而,这会导致一个错误,因为FooSet [i]是一个对象的列表,而不是对象本身;为了获得对象,我需要做FooSet [[i]]。有没有一种简单的方法让逻辑索引向量适当地检查对象元素,或者其他一些方法来做到这一点吗?
澄清最后位, FooSet [1] @Attrib [1] 生成错误: 错误:尝试从一个对象获取时隙 “ATTRIB”没有插槽的基本类(“列表”)。另一方面, FooSet [[1]] @ Attrib [1] 生成一个值,对于我的测试1 1 – Evan