R:错误表达式未评估为长度n的对象。

3

我用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函数或vectorize函数。但首先,我不知道为什么要用这些函数,其次它们似乎并不起作用。

1个回答

4

您需要进行向量化(Vectorize),因为curve函数期望得到这样的函数才能计算出绘图数据。由于integrate输出了一个复杂的对象,所以它无法正常工作。因此,您需要隔离输出中的相关部分:

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

它与$value一起运作得更好,但我不确定它的确切目的。 - Saroupille
1
@Saroupille integrate 返回的不仅仅是计算出来的积分值;它还返回一个误差估计值,以及任何失败时的诊断信息。所有这些都被包装在一个列表中。$value 提取的只是积分值。 - Hong Ooi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接