2013-12-20 2 views
1

우리는 S4 방법을 사용하여 R에서 객체 지향 프로그래밍을 프로그래밍하려고했습니다. 프로그래밍 과정에서 몇 가지 문제가 발생했습니다. 분명히 S4 방법의 사용은 아직 인터넷에서 잘 설명되어 있지 않으므로 여기에서 우리의 질문에 대한 답을 얻을 수 있기를 바랍니다.S4 방법 사용에 관한 질문이

첫 번째 질문 :

우리는 빈 S4 객체의 .. 벡터/배열/목록을 만들려고 노력했다. 인터넷을 검색하면이 포럼에서 다음과 같은 질문에 우리를 데리고 : 바와 같이 (유사) 위의 질문에 대한 답변 중 하나에 설명 된, 우리는 빈 S4 개체의 목록을 만들려면 다음 코드를 사용

Create a vector of empty S4 objects

:

setClass("Name", representation(pos_x = "numeric", pos_y = "numeric", found = 
"logical"), prototype(found = FALSE)) 

newList <- lapply(rep("Name", 2), new) 

이것은 완벽하게 작동합니다. 그러나 S4 방법의 한 슬롯 (한 변수)을 호출하려고하면이 방법이 작동하지 않습니다. 예를 들어 "pos_x"슬롯을 호출하려면 다음 코드

newList[1]@pos_x 

이 작동하지 않습니다. 우리가받는 오류 메시지는 "슬롯이없는 기본 클래스 ("목록 ")의 객체에서 슬롯 pos_x를 얻으려고하는 것입니다. 명확하게 정의되어 있지만 슬롯이 S4 메소드에 할당되지 않은 것처럼 보입니다. 목록에 우리가 S4-방법/목록의 개체 중 하나에서 슬롯을 호출하는 방법을

사람이 알고 있나요

는 두 번째 질문 :.?

우리는하고 싶은는 하나 여부를 테스트합니다 위의 목록의 요소는 나중에 "NULL"과 같습니다.

이를 확인하려면 시도 :

newList[1] == NULL 

그러나이 경우에만 "논리 (0)"가됩니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?

제안, 의견 및 질문은 대단히 환영합니다.

고맙습니다.

답변

1

[[ 대신 [을 사용했기 때문에 문제 일 수 있습니다.

명령 newList[1]은 길이가 1 인 목록을 반환하지만 명령 newList[[1]]은 목록의 요소를 반환합니다. 그러므로 시도해야합니다 :

newList[[1]]@pos_x 
관련 문제