将函数应用于dplyr组中每个组的每一行

时间:2017-12-24 03:13:06

标签: r dplyr

我有一个由我想要应用的函数组成的数据框让f1和f2代表这些以 dbh ht 作为参数的函数。

spcd   region   function
122    'OR_W'   f1 
141    'OR_W'   f2

我还有一个类似于

的数据框
spcd   region   dbh   ht
122    'OR_W'   12    101
122    'OR_W'   13    141
122    'OR_W'   15    122
141    'OR_W'   12    101

我想将存储在第一个数据框中的函数应用到第二个数据框中的行,以生成类似这样的内容

spcd   region   dbh   ht   output
122    'OR_W'   12    101  <output of f1>
122    'OR_W'   13    141  <output of f1>
122    'OR_W'   15    122  <output of f1>
141    'OR_W'   12    101  <output of f2>

其中<output of f1>是输入为dbh和ht的第一个函数的输出。

我认为dplyr的group_by对此有用,可以在第二个数据帧中对spcd和region进行分组,然后为该组中的每一行应用正确的函数。

有没有办法将行按顺序应用于dplyr group_by对象中的组?

1 个答案:

答案 0 :(得分:0)

这是一个基础解决方案;

0: 42
1: word word word word word 
2: The date and time is Sat Dec 23 20:32:33 PST 2017

使用的数据:

 Map(apply,split(data1[-1],data1$d),1,c(data2$fun))) 

 data1["output"]=c(mapply(apply,split(data1[-1],data1$d),1,c(data2$fun)))
 data1
    d Girth Height Volume output
 1  1   8.3     70   10.3   88.6
 2  1   8.6     65   10.3   83.9
 3  1   8.8     63   10.2   82.0
 4  1  10.5     72   16.4   98.9
 5  1  10.7     81   18.8  110.5
 6  2  10.8     83   19.7   83.0
 7  2  11.0     66   15.6   66.0
 8  2  11.0     75   18.2   75.0
 9  2  11.1     80   22.6   80.0
 10 2  11.2     75   19.9   75.0