集成错误:length(lower) == 1不是TRUE



我试图在数值范围内整合概率分布。它应该是这样的。例如,我想用指数概率分布函数(https://en.wikipedia.org/wiki/Exponential_distribution, http://homepages.math.uic.edu/~jyang06/stat401/handouts/handout8.pdf):

)做到这一点。
## define the integrated function (for lambda = 2)
integrand <- function(x) {2 * 2.718^(-2*x)}
upper = seq(0, 5, by = 0.01)
lower = 0
data = data.frame(lower,upper)
data$integral = integrate(integrand, lower = data$lower, upper = data$upper)

不幸的是,我得到了这个错误:

Error in integrate(integrand, lower = my_data$lower, upper = my_data$upper) : 
length(lower) == 1 is not TRUE
  • 有人知道这意味着什么,我怎么能避免它吗?

这很奇怪,因为积分函数正常工作,否则:

> integrate(integrand, lower = 0, upper = 0.01)
0.02020132 with absolute error < 2.2e-16
> integrate(integrand, lower = 0, upper = 0.06)
0.127496 with absolute error < 1.4e-15

谢谢!

试试这个

data$integral  <- apply(data, 1, function(x) {integrate(integrand, lower = x[1], upper = x[2])$value})
head(data)
lower upper   integral
1     0  0.00 0.00000000
2     0  0.01 0.02020132
3     0  0.02 0.04081069
4     0  0.03 0.06183635
5     0  0.04 0.08328672
6     0  0.05 0.10517036

最新更新