2012-09-27 2 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]))) 

글로벌 환경에서 각 개체의 클래스가 확인됩니다. myClass이고 description 슬롯에 "test"이 있으면 name 슬롯의 값과 개체 이름이 모두 반환됩니다. 귀하의 예를 들어

출력 :

my1 my3 
"my1" "my3"