2017-07-14 7 views
0

私はRには新しく、簡単な機能の作り方を学んでいます。 誰もこのRのPythonの追加機能を複製する方法を教えてもらえますか?Rで同様のPython関数を作成するには?

def add(self,x,y): 
    number_types = (int, long, float, complex) 
    if isinstance(x, number_types) and isinstance(y, number_types): 
     return x+y 
    else: 
     raise ValueError 
+0

構文からRを学ぼうとするべきです – MIRMIX

答えて

0

あなたはPythonで何をしたかにより近いもの作りについてのthinkin':アクションで

add <- function(x,y){ 
    number_types <- c('integer', 'numeric', 'complex') 
    if(class(x) %in% number_types && class(y) %in% number_types){ 
    z <- x+y 
    z 
    } else stop('Either "x" or "y" is not a numeric value.') 
} 

を:Rに我々は唯一の基本的な数値としてintegernumericcomplexを持っていることを

> add(3,7) 
[1] 10 
> add(5,10+5i) 
[1] 15+5i 
> add(3L,4) 
[1] 7 
> add('a',10) 
Error in add("a", 10) : Either "x" or "y" is not a numeric value. 
> add(10,'a') 
Error in add(10, "a") : Either "x" or "y" is not a numeric value. 

お知らせデータ型。

最後に、エラー処理があなたの望むものかどうかはわかりませんが、助けてください。

+0

ありがとう、それは素晴らしいと非常に有用です! –

2

オブジェクト指向プログラミングはRで使用できますが、Rは主に関数型プログラミング言語です。同等の機能は以下の通りです。

add <- function(x, y) { 

    stopifnot(is.numeric(x) | is.complex(x)) 
    stopifnot(is.numeric(y) | is.complex(y)) 
    x+y 

} 

注:+を使用すると、あなたはすでに何を求めているのですか?

+0

正しく理解したら、テストにis.complex()を追加してください。 'is.numeric()'の結果として 'complex '型の変数に適用されたときは' FALSE'です。 –

+0

私の回答を更新しました – troh

+0

あまりにも助けてくれてありがとう!それは面白そうだね!そして、はい、私は+記号を認識しています、それは間違いなく最も簡単な方法です!おかげで –

関連する問題