【问题标题】:R : Error expr did not evaluate to an object of length nR:错误 expr 未计算为长度为 n 的对象
【发布时间】:2013-06-26 10:22:55
【问题描述】:

我以这种方式用 R 创建了两个函数:

 esp<-function(x) x*dexp(x,lambda)

然后:

 esp2<-function(R) integrate(esp,0,R)

我可以绘制第一个,但是当我尝试绘制第二个时出现错误:

'expr' did not evaluate to an object of length n 

通过一些研究,我必须使用 sapply 函数或矢量化函数。但一是不知道为什么,二是不行。

【问题讨论】:

    标签: r


    【解决方案1】:

    您需要Vectorize 它,因为curve 需要这样一个函数来计算绘图数据。它不起作用,因为integrate 输出了一个复杂的对象。因此,您需要隔离输出的相关部分:

    esp2 <- function(R) integrate(esp,0,R)$value
    plot(Vectorize(esp2))
    

    【讨论】:

    • 使用 $value 效果更好,但我不知道它的确切用途。
    • @Saroupille integrate 返回的不仅仅是计算的积分;它还返回对错误的估计,如果失败则返回任何诊断消息。所有这些都包含在一个列表中。 $value 只提取积分的值。
    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多