我正在尝试在R中使用function(x1,x2,x3,x4){2 * x2 * x4 + x3 ( x1 - 2 * x4)}
来绘制此函数curve()
的图形。但是,我遇到了:
f1(x)中的错误:缺少参数“ x2”,没有默认值
x1
x2
x3
和x4
也应该具有不同的最小值和最大值,但是我会担心的,只需显示任何图形
答案 0 :(得分:1)
Plotting a function curve in R with 2 or more variables
上面的链接与您的问题相似,可能有助于您解决问题。您可能必须添加功能库里(在功能包中)以预先指定参数。希望有帮助。
答案 1 :(得分:1)
曲线
正如我在评论中已经提到的那样,我不明白您为什么要使用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都应具有不同的最小值和最大值”一样,我建议您只需编写自己的绘图函数,就像这样(我现在在x轴上显示x1
) :
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))