2
パイプ内の名前空間を使用して関数を呼び出すときに、コードの最後の行の動作に違いがあり、エラーメッセージが実際に意味するもの:関数の演算子の優先度がパイプの名前空間によって呼び出される
library(magrittr)
1:5 %>% cumsum
#### [1] 1 3 6 10 15
1:5 %>% cumsum()
#### [1] 1 3 6 10 15
1:5 %>% base::cumsum()
#### [1] 1 3 6 10 15
1:5 %>% (base::cumsum)
#### [1] 1 3 6 10 15
1:5 %>% base::cumsum
#### Error in .::base : unused argument (cumsum)
私は本当にそれが最高の優先度が遠く離れて特別な事業者から、名前空間演算子::
ためのものであることをoperator precedence rules状態以来、働くだろうと思いました。
ありがとうございました。
ありがとうございますが、このプリミティブ関数が正確に何をしているのかはわかりません...パッケージの名前空間を指定すると、同じ関数ではありません。 – agenis
のように、はい。 '()'を置かないと、 'namespace'からの呼び出しにかかわらず、引数を渡す意味で関数として扱われません。変数の名前を入力するだけで、それが印刷されるようなものです。関数のいくつかの説明が出力されるので、あなたが引数を渡すことを期待せず、試してみるとエラーがスローされます。 –
それは私が 'str(cumsum)'と 'str(base :: cumsum)'を実行するときに同じことが起こるので変です。あなたは偶然このテーマを読むための文書をお持ちですか? – agenis