2

我想绘制 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))

然后能够可视化结果。虽然优化功能有效,但我不知道如何让曲线()也能正常工作。谢谢!

4

2 回答 2

3

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

f <- Vectorize(function(x) mean(var+x))
curve(f,from=0, to=10)
于 2012-08-30T15:19:32.880 回答
2

这可以在一般情况下使用sapply

curve(sapply(x, function(e) mean(var + e)))

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

于 2012-08-30T15:17:22.940 回答