2009-11-16 10 views
11

R 함수를 작성 중이며 R 함수의 인수가 특정 클래스 (예 : "매트릭스")인지 확인하려고합니다.R 함수의 인수 유형을 정의하는 방법은 무엇입니까?

가장 좋은 방법은 무엇입니까?

가 나는 행렬의 역행렬 계산하는 기능 "foo는"이 말 :

foo <- function(x) 
{ 
    # I want to make sure x is of type "matrix" 
    solve(x) 
} 

어떻게 내가 말할 수를 - 당신이 C에서 하듯이 - function(matrix x)x 유형 matrix이어야합니다 "라는 표시하기 위해, 그렇지 않은 경우 오류를 반환합니다. "

foo <- function(x) 
{ 
    if(!is.matrix(x)) stop("x must be a matrix") 
    # I want to make sure x is of type "matrix" 
    solve(x) 
} 

답변

13

is.matrix(foo) 

외에 당신 또한도이없는 비표준 작동

class(foo) == "matrix" 

을 테스트 할 수 있습니다기능.

+0

좋습니다. 나는 "is.matrix"를 완전히 몰랐다. 감사! – poundifdef

+0

기본적으로 모든 데이터 유형에는 * is * 및 * as * 기능이 있습니다. – Shane

3

그냥 완전성에 대해 : 당신은 그것을 is.matrix 또는 다른 매개 변수가 전달 된 후 as.matrix로 변환 매트릭스의 확인 할 수 있습니다

+5

R에있는 객체가 둘 이상의 클래스를 가질 수 있으므로 여기에서주의해야합니다. 따라서 코드는 % class (foo)의 "matrix"%를 읽어야합니다. –

+0

동의 해 주셔서 감사합니다! –

+3

또는 '상속 사용' – hadley

12

stopifnot(is.matrix(x))

관련 문제