【发布时间】:2018-06-06 01:38:11
【问题描述】:
我有一个数据框,其中包含要应用的函数,让 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 和区域进行分组,然后对该组中的每一行应用正确的函数。
有没有办法将函数逐行应用于 dplyr group_by 对象中的组?
【问题讨论】:
-
你介意使用base R吗?你也可以举一个可重现的例子吗?
-
Map(function(f,x)apply(x,1,f),c(data1$function),split(data2,spcd))。当且仅当data1$function可以尝试使用is.function(data[1,3])来查看它们是否存储为函数 -
加入并使用
purrr::invoke_map变体,但您需要to make the example reproducible 才能获得正确答案。