最初の呼び出しの結果と2番目の呼び出しの3番目の引数などを使用して、2つの引数をとる関数をリストに繰り返し適用したいと思います。
たとえば、リストに4つの要素があり、関数fが与えられた場合、結果を。にしますf(f(f(1,2),3),4)
。そのような機能はありますか?
例として、データフレームのリストを作成します。これらはすべて特定の列にマージする必要があります。
最初の呼び出しの結果と2番目の呼び出しの3番目の引数などを使用して、2つの引数をとる関数をリストに繰り返し適用したいと思います。
たとえば、リストに4つの要素があり、関数fが与えられた場合、結果を。にしますf(f(f(1,2),3),4)
。そのような機能はありますか?
例として、データフレームのリストを作成します。これらはすべて特定の列にマージする必要があります。
関数を再帰的に呼び出す1つの方法は、を使用することReduce
です。差出人?Reduce
:
「Reduce」は、バイナリ関数を使用して、指定されたベクトルの要素と、場合によっては指定された初期値を連続して結合します。
次のようなリストから複数のdata.frameをマージできます。
# some dummy data
a <- list(data.frame(a=1:10, b=rnorm(10)), data.frame(a=1:10, b=rnorm(10)), data.frame(a=1:10, b=rnorm(10)))
Reduce(function(u, v) cbind(u, v$b) , a)
a b v$b v$b
1 1 -1.2968741 -0.4186869 0.29888504
2 2 -0.2680551 0.3315939 2.05348116
3 3 -0.5188585 0.5125005 1.95103927
4 4 -0.7447659 -1.2982199 0.80582874
5 5 0.2391337 -0.6818633 -0.75994882
6 6 -0.6391927 0.3584701 1.50356731
7 7 1.0117809 -0.1060888 0.07402643
8 8 -1.8877719 -0.4380313 0.49141877
9 9 -0.7392668 1.1527095 1.40168828
10 10 -1.0318087 0.1889492 1.39867700