Rのすべてが機能していると読んだことがあります。算術演算子を関数として扱う
xx <- c(1,2,3)
yy <- c(1,2,3,4,5,6)
# zz is the sum of the two lengths
zz <- +(if(exists("xx")) length(xx), if(exists("yy")) length(yy))
Rのすべてが機能していると読んだことがあります。算術演算子を関数として扱う
xx <- c(1,2,3)
yy <- c(1,2,3,4,5,6)
# zz is the sum of the two lengths
zz <- +(if(exists("xx")) length(xx), if(exists("yy")) length(yy))
はい、次のことができます:
xx <- c(1,2,3)
yy <- c(1,2,3,4,5,6)
# zz is the sum of the two lengths
zz <- `+`(if(exists("xx")) length(xx), if(exists("yy")) length(yy))
#[1] 9
構文的に有効持たないオブジェクトを呼び出すために「+」があまりにも 、我々はそのような何かを書くことができる場合、関数であれば、私は疑問に思います(例えば、あなたが1 + 2
ような何かを行う場合は、暗黙的に呼び出される関数+
など)の名前あなたはバッククォート( `)または二重引用符(」または「)で名前を囲む必要があります。
も参照してくださいR Language Definitionの3.1.4 :0あなたは(バイナリ)機能"+"
が、関数の引数を期待していない単項演算子+
を呼び出すことはありませんので、これは
Error: unexpected ',' in "zz <- +(if(exists("xx")) length(xx),"
:あなたのコードで
は、エラーが発生しますかっこを「算術」演算子として解釈します。それらの間にカンマは使用できません。Except for the syntax, there is no difference between applying an operator and calling a function. In fact, x + y can equivalently be written `+`(x, y). Notice that since ‘+’ is a non-standard function name, it needs to be quoted.
'+'の代わりに 'sum'を使用する – akrun
' + '実際にはダニを追加するだけの機能です。 –
しかし、 'if(exists())'を使った構造は '+'関数呼び出しの中で期待どおりに動作しません。変数の1つが存在しない場合はどうなるか試してみてください。基本的に '1 + NULL'のようなことをします。 – Roland