如何编写一个函数,为外部定义的不同参数值打印不同的输出?

时间:2016-05-27 00:27:18

标签: r function graph parameters

我还是R的初学者,所以如果这个问题太微不足道,我会提前道歉,但我真的陷入困境,似乎无法找到解决方案。

我在 x 中定义了一个没有参数的函数,我发现它的根是“uniroot”(函数严格增加所以总有一个根)。现在,我想在函数中引入一个参数(假设 a )并获取R以打印函数假设的 a 更改的不同根。例如,让我们考虑一个简单的函数,例如:

F(x)= 2x + a

我需要R来打印一个表格(可能是矩阵?),看起来像这样:

Table

其中参数的每个值都在函数的根旁边(实际上不需要第一列中的函数文本)。

我正在使用的实际函数必须每次都由R解决,因为它还包含我认为不能明确的补充错误函数(erfc)。最终目标是制作一个图表,其中Y轴上的函数根和X轴上的参数值。我需要实际参数从1/1000变化到1000,这样:

1 / 1000,1 / 9,9 / 998,......,1 / 2,1,2,3,......,1000

基本上分母减1,最高为1/1,然后分子开始增加1。

我希望我完全清楚。有没有人可以帮助我?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以编写一个返回另一个函数的函数来执行此操作:

f <- function(a) function(x) 2 * x + a
sapply(-5:5, function(par) uniroot(f(par), c(-100, 100))$root)
 [1]  2.5  2.0  1.5  1.0  0.5  0.0 -0.5 -1.0 -1.5 -2.0 -2.5

制作情节:

pars <- c(1/(1000:1), 2:1000)
root <- sapply(pars, function(par) uniroot(f(par), c(-600, 100))$root)
plot(pars, root)

enter image description here

您可能还希望对x轴进行对数缩放:

plot(log(pars), root)

enter image description here