2012-09-27 72 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" 
相關問題