R曲线()涉及矢量的表达式

时间:2012-08-30 15:08:51

标签: r vectorization curve

我想绘制x的函数,其中x应用于向量。无论如何,最容易给出一个简单的例子:

var <- c(1,2,3)
curve(mean(var)+x)
curve(mean(var+x))

第一个工作时,第二个产生错误: 'expr'没有评估长度为'n'的对象 在var + x中:较长的对象长度不是较短对象长度的倍数

基本上我想找到这样一个函数的最小值:例如

optimize(function(x) mean(var+x), interval=c(0,1))

然后能够可视化结果。虽然优化功能有效,但我无法弄清楚如何使曲线()也能正常工作..谢谢!

2 个答案:

答案 0 :(得分:1)

这可以在使用sapply

的一般情况下完成
curve(sapply(x, function(e) mean(var + e)))

在您给出的具体示例中,mean(var) + x当然与您正在寻找的算术等价。对于您正在使用的更复杂的功能,可能存在类似的快捷方式。

答案 1 :(得分:1)

该功能需要进行矢量化。这意味着,如果它评估向量,它必须返回相同长度的向量。如果将任何向量传递给mean,则结果始终为长度为1的向量。因此,均值不是向量化的。您可以使用Vectorize

f <- Vectorize(function(x) mean(var+x))
curve(f,from=0, to=10)