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",my1@description,value=T)

我最终得到了整个表达式“一些测试”。当然,我可以将所有这些插槽放在一个列表中并应用于它们。但我仍然只是以描述本身结束,而不知道它们属于哪个名称。

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

你宁愿在一个单独的环境中组织一堆类的实例还是一个实例列表?

4

1 回答 1

1

此命令将查找实例:

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

检查全局环境中每个对象的类。如果是myClass并且description槽包含"test",则槽中的值name和对象名称都将被返回。

您的示例的输出:

  my1   my3 
"my1" "my3" 
于 2012-09-27T12:53:39.167 回答