我正在尝试在 R 中function(x1,x2,x3,x4){2 * x2 * x4 + x3 ( x1 - 2 * x4)}
使用这个函数来绘制图形curve()
。但是,我遇到了:
f1(x) 中的错误:缺少参数“x2”,没有默认值
x1
x2
x3
并且x4
都应该具有不同的最小值和最大值,但是在我可以显示任何图形后我会担心
曲线
正如我在评论中已经提到的,我不明白你为什么要使用curve
它,因为它被构建为接受单一范围的数字,例如 1,2,3,4,然后对其应用公式。这使得绘图变得简单,因为输入数字形成 x 轴(因此是 1,2,3,4...),而公式结果绘制在 y 轴上。在你的情况你没有一个单一的输入范围(其实你有四个范围:x1
,x2
,x3
和x4
),你不能在5D画出这样你必须选择一个x1:x4
以显示在x轴上。你也有2 * x2 * x4 + x3 ( x1 - 2 * x4)
公式但是.. x3 ( ..
不能被 R 直接解释所以我添加了 * 来制作2 * x2 * x4 + x3 * ( x1 - 2 * x4)
但是,如果您的意思是 X3 应该与括号内的数字相乘,您应该编辑下面代码中的公式。
替代方案
正如您提到的“x1 x2 x3 和 x4 都应该具有不同的最小值和最大值”,我建议您简单地编写自己的绘图函数,如下所示(我现在显示x1
在 x 轴上):
range.plot <- function( func, x1.range, x2.range, x3.range, x4.range ) {
# Apply formula
res <- data.frame(x = x1.range, y = func(x1.range, x2.range, x3.range, x4.range))
# Plot using ggplot2
ggplot(res, aes(x, y)) + geom_line()
}
fun <- function(x1,x2,x3,x4){2 * x2 * x4 + x3 * ( x1 - 2 * x4)} # note the added *
range.plot(fun, seq(1,10), seq(10,29), seq(5,14), seq(1,10))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句