나는 여기 뉴비 다. S4 클래스를 사용하려고합니다. 일부 설정 방법에서는 입력 값을 받아서 유효한지 테스트하고 싶습니다. 그것이 유효하다면, 나는 그것을 할당하고 싶습니다. 유효하지 않은 경우 테스트 할 수있는 경고를 생성하고 싶습니다.S4 클래스로 오류 처리
> thisFoo<-new("foo", ind = 2)
> thisFoo
An object of class "foo"
Slot "ind":
[1] 2
> setInd(thisFoo)<-"A"
Warning message:
In `setInd<-`(`*tmp*`, value = "A") : Foobar
> thisFoo
An object of class "foo"
Slot "ind":
[1] 2
하지만 할당이 실패 테스트 할 수 있도록하고 싶습니다 : 나는 문자를 할당 할 때
setClass("foo", representation(ind = "numeric"))
setGeneric(name="setInd<-",def=function(object,value){standardGeneric("setInd<-")})
setReplaceMethod(f="setInd",signature="foo",
def=function(object,value){
if(is.numeric(value)){
[email protected]<-value;}
else{
warning("Foobar")
}
return(object)}
)
이 경고 메시지를 생성합니다 다음은 간단한 예입니다. 이 일을하는 좋은 방법은 무엇입니까? 감사.
이 경우 할당은 클래스 정의를 위반하고 어쨌든 오류가 발생합니다. 시험은 필요하지 않습니다. 대안으로, 대체 메소드의 서명으로'c ("foo", "numeric")'를 사용하면,'c ("foo", "character"와 일치하는 메소드가 없기 때문에) '). Joris가 언급 한대로'tryCatch'로 오류를 잡아라. –