R:通过设置其其他参数将具有多个参数的函数作为一个参数之一传递给另一个函数
R: Pass a function of many parameters as one of one parameter to another function by setting its other parameters
一般问题:
我有一个函数将另一个函数作为参数,形式为:
F <- function(x, FUN){FUN(x)}
我可以轻松地向它传递一个简单的函数:
f1 <- function(x){plot(x, 1/x)}
F(-5:5, f1)
将显示 1/x 的图。
假设我有另一个更复杂的函数:
f2 <- function(x, a){plot(x, 1/x^a)}
f2
有 2 个参数,因此不能直接传递给 F
。但我可能想保留 a 的灵活性,这样,无需定义许多不同的函数,我就可以快速绘制 1/x^a
以获得我喜欢的任何 a 值。我试过了,a = 2
:
F(-5:5, f2(, 2))
F(-5:5, f2(, a=2))
F(-5:5, f2(x, 2))
F(-5:5, f2(a=2))
但是 none 这些工作。有没有人有办法解决吗? (我可以在 f2
中为 a
设置默认值,但后来我不能 运行 它具有不同的 a
值)。
具体上下文:
我有一个函数,它将找到一个函数的逆拉普拉斯变换,将一个函数作为它的参数,该函数应该有一个参数(拉普拉斯变量 p)。我可以反转像上面 f1
这样的函数。但我正在尝试反转地下水中污染物传输的函数。这个过程取决于许多其他参数,例如水流速度和行进的距离。所以我希望能够为拉普拉斯反演传递一个多参数函数,这样除了拉普拉斯参数 p 之外的所有参数都是固定的。最后,我想用不同的速度值等多次执行此过程,因此我需要一种流畅的方式来更改正在使用的 "fixed" 参数。
在此先感谢您的帮助,
克里斯托弗
只需定义一个函数生成器:
genFunc = function(a)
{
function(x) plot(x, 1/x^a)
}
F(-5:5, genFunc(2))
或者使用 functional
包中的 Curry
来修正你想要的参数并为你的饭菜调味:
library(functional)
F(-5:5, Curry(f2, a=2))
一般问题: 我有一个函数将另一个函数作为参数,形式为:
F <- function(x, FUN){FUN(x)}
我可以轻松地向它传递一个简单的函数:
f1 <- function(x){plot(x, 1/x)}
F(-5:5, f1)
将显示 1/x 的图。
假设我有另一个更复杂的函数:
f2 <- function(x, a){plot(x, 1/x^a)}
f2
有 2 个参数,因此不能直接传递给 F
。但我可能想保留 a 的灵活性,这样,无需定义许多不同的函数,我就可以快速绘制 1/x^a
以获得我喜欢的任何 a 值。我试过了,a = 2
:
F(-5:5, f2(, 2))
F(-5:5, f2(, a=2))
F(-5:5, f2(x, 2))
F(-5:5, f2(a=2))
但是 none 这些工作。有没有人有办法解决吗? (我可以在 f2
中为 a
设置默认值,但后来我不能 运行 它具有不同的 a
值)。
具体上下文:
我有一个函数,它将找到一个函数的逆拉普拉斯变换,将一个函数作为它的参数,该函数应该有一个参数(拉普拉斯变量 p)。我可以反转像上面 f1
这样的函数。但我正在尝试反转地下水中污染物传输的函数。这个过程取决于许多其他参数,例如水流速度和行进的距离。所以我希望能够为拉普拉斯反演传递一个多参数函数,这样除了拉普拉斯参数 p 之外的所有参数都是固定的。最后,我想用不同的速度值等多次执行此过程,因此我需要一种流畅的方式来更改正在使用的 "fixed" 参数。
在此先感谢您的帮助, 克里斯托弗
只需定义一个函数生成器:
genFunc = function(a)
{
function(x) plot(x, 1/x^a)
}
F(-5:5, genFunc(2))
或者使用 functional
包中的 Curry
来修正你想要的参数并为你的饭菜调味:
library(functional)
F(-5:5, Curry(f2, a=2))