2012-09-27 43 views
1

假设我有几个S4类的实例,就像本例中一样。从插槽上的多个实例中选择一个类的实例?

setClass("myClass",representation(name = "character", 
      description = "character") 

my1 <- new("myClass",name = "my1",description = "Some test.") 
my2 <- new("myClass",name = "my2",description = "Some try.") 
my3 <- new("myClass",name = "my3",description = "Some more elaborate test.") 

我想给回包含单词test所有类(即名称槽或对象名称)的名字。如果我只是在单槽的使用grep它部分工作:

grep("test",[email protected],value=T) 

我结束了整个expresion“有些测试”。当然,我可以将所有这些插槽放入列表中并应用于它们。但是,我仍然不知道自己属于哪个名字,而只是描述本身。

那么,我怎样才能找到我想要的实例呢?

您是否愿意在单独的环境或实例列表中组织一堆类的实例?

回答

1

这个命令会找到实例:

unlist(eapply(.GlobalEnv, 
       function(x) 
       if (class(x)[1] == "myClass") 
        if (any(grep("test", [email protected]))) return([email protected]))) 

类在全球环境中的每个对象的检查。如果它是myClassdescription插槽包含"test",则将返回name插槽中的值和对象名称。

输出作为例如:

my1 my3 
"my1" "my3"