使用先前调用的结果重复应用2参数函数

时间:2012-07-25 07:54:53

标签: r

我想重复应用一个函数,它接受一个列表的两个参数,使用第一个调用的结果和第二个调用的第三个参数等等。

e.g。如果列表有4个元素,并给定函数f,我希望结果为f(f(f(1,2),3),4)。这样的功能是否存在?

一个例子是拥有一个数据帧列表,这些数据帧应该在特定列上合并。

1 个答案:

答案 0 :(得分:4)

递归调用函数的一种方法是使用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