別の質問の延長である質問があります。
匿名関数をパイプラインできるようにしたいと思っています。前の質問では、パイプラインで定義された関数に対する答えは、パイプライン演算子 "%|>%"を作成し、次のように定義することでした。
"%|>%" <- function(fun1, fun2){
function(x){fun2(fun1(x))}
}
これにより、前の関数の結果を次の関数に継続的に渡しながら、一連の関数を呼び出すことができます。注意点は、関数を事前定義する必要があるということでした。今、私は無名関数でこれを行う方法を理解しようとしています。事前定義された関数を使用した以前のソリューションは次のようになります。
square <- function(x){x^2}
add5 <- function(x){x + 5}
pipelineTest <-
square %|>%
add5
これはあなたにこの振る舞いを与えます:
> pipelineTest(1:10)
[1] 6 9 14 21 30 41 54 69 86 105
pipelineTest
次のような無名関数で関数を定義できるようにしたいと思います。
anonymousPipelineTest <-
function(x){x^2} %|>%
function(x){x+5} %|>%
x
上記と同じ引数でこれを呼び出そうとすると、次のようになります。
> anonymousPipelineTest(1:10)
function(x){fun2(fun1(x))}
<environment: 0x000000000ba1c468>
私が得たいと思っているのは、と同じ結果pipelineTest(1:10)
です。これは些細な例だと思います。私が本当に得ようとしているのは、無名関数をパイプライン化する方法です。助けてくれてありがとう!