2009-11-16 41 views
11

私はR関数を書いています。私のR関数の引数が特定のクラス(例えば、 "行列")であることを確認したいと思います。R関数の引数型を定義する方法は?

これを行うにはどのような方法が最適ですか? 、xはタイプmatrixでなければならない」ということを示すためにfunction(matrix x) - あなたがCにかもしれませんが -

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

私が言うことができる方法:

は、私は行列の逆行列を計算する関数「foo」を持っていると言いますそうでない場合は、エラーを返します。

答えて

13

あなたはそれがis.matrixの行列だか、他のパラメータが渡された後as.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) 
} 
+0

大丈夫です。私は "is.matrix"にはまったく気付かなかった。ありがとう! – poundifdef

+0

本質的にすべてのデータ型は* is *と* as *関数を持ちます。 – Shane

3

ただ、完全を期すため:以外にも

is.matrix(foo) 

あなたはテストすることもできます

class(foo) == "matrix" 

また、を持っていない非標準機能。

+5

Rのオブジェクトには複数のクラスが含まれることがあるので、ここでは注意が必要です。したがって、コードは%class(foo)の "matrix"%を読み込む必要があります。 –

+0

合意しました、ありがとう! –

+3

また、 '継承'を使う – hadley

12

stopifnot(is.matrix(x))

関連する問題