我想绘制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))
然后能够可视化结果。虽然优化功能有效,但我无法弄清楚如何使曲线()也能正常工作..谢谢!
答案 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)