我有一个由我想要应用的函数组成的数据框让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对象中的组?
答案 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