2017-07-07 3 views
0

0/0をRで実行すると、NaNが出力されます。しかし、0/01として印刷する方法はありますか?私はそれを達成するためにいくつかifステートメントを使用できることを知っています。私はこれを達成する他の方法があるかどうかを知りたいと思います。 Ifステートメントを使用するよりも0に0を1として出力する

+1

「NaN」を「1」で置き換えることはできますか? 'x [is.nan(x)] < - 1'ですか? – Phil

+1

この質問に対する回答を参照してください。https://stackoverflow.com/questions/8022979/operator-overloading-and-class-definition-in-r-use-a-different-base-field-corpu数学演算。 – Suren

+0

もっと簡単なオプションは、関数、例えば 'div'を定義して除算に使うことです。 – Suren

答えて

3

だろう。たとえば、

'|' <- function(a,b)ifelse(a==0 & b==0, 1, a/b) 

> 0|0 
[1] 1 
> 3|4 
[1] 0.75 
+0

もっと分かりやすい名前を使いたい場合は、 '%'で囲んだ演算子を '%div%'のように定義することができます。効率が問題であれば、%div%< - function(a、b){x < - a/b; x [is.nan(x)] < - 1; x} '(しかし、効率の改善は非常に小さい) – Benjamin

0

他の方法は、あなたが、特にこのために、独自の分割シンボルを定義することができ

# Assign NaN to vector 
a <- 0/0 
# If is NaN assign value 1 
a[is.nan(a)] <- 1 
関連する問題