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.")

単語を含むすべてのクラスの名前(つまり、名前スロットまたはオブジェクト名)を返したいと思いますtestgrepシングルスロットで使用する場合、部分的に機能します。

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 に答える