我用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函数。但首先,我不知道为什么要用这些函数,其次它们似乎并不起作用。
我用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函数。但首先,我不知道为什么要用这些函数,其次它们似乎并不起作用。
您需要进行向量化(Vectorize)
,因为curve
函数期望得到这样的函数才能计算出绘图数据。由于integrate
输出了一个复杂的对象,所以它无法正常工作。因此,您需要隔离输出中的相关部分:
esp2 <- function(R) integrate(esp,0,R)$value
plot(Vectorize(esp2))
integrate
返回的不仅仅是计算出来的积分值;它还返回一个误差估计值,以及任何失败时的诊断信息。所有这些都被包装在一个列表中。$value
提取的只是积分值。 - Hong Ooi