r - 在另一个函数中使用一个函数作为输入
问题描述
我正在尝试修复下面的代码。下面的代码是我真实代码的简化版本
fa=function(x){
x+y
}
fb=function(x,func){
y=rnorm(1)
func(x)
}
fb(3,fa)
运行代码返回错误:
“func(x) 中的错误:找不到对象‘y’”。
我可以通过移动y=rnorm(1)
到全局环境来修复它,但我需要y
发挥作用,因为在我的真实代码中,每次迭代都有一个 for 循环和 y 变化。
非常感谢解决此问题的任何帮助
解决方案
您可以使用match.fun
将函数作为参数传递。不过,我不确定解决这个特定问题的最佳方法是什么。
fa = function(x, y){
x + y
}
set.seed(42)
fb = function(x, func){
y = rnorm(1)
match.fun(func)(x, y)
}
fb(3, fa)
#[1] 4.370958
推荐阅读
- flutter - 无法将动态向下转换为列表
在地图上使用时 - entity-framework - 按具有多对多关系的实体中的计数属性排序
- mongodb - 查询节点的所有后代
- mongodb - MongoDB 在使用 PL 时正确插入和查找,但记录未显示在 mongo shell 上
- java - 不能改变整型变量的值
- asp.net-core - 使用数据库优先方法在 Blazor WebAssembly 中进行身份验证和授权
- javafx - JavaFX 更改字体大小会导致小文本出现几分之一秒
- python - 在 odoo13 中创建多条记录失败,但在 odoo12 中通过
- python - 试图告诉我的 pylint“太多局部变量”是什么,我该怎么办?
- mysql - 使用没有 SQLINjection 范围的 JPA 或 entityManager 查找列的不同值