将集成值保存在R中的数组中

时间:2013-06-23 13:14:47

标签: r integration

我想在数组中保存积分值。在下面的程序中,从q = 1到q = 10.但是由于输出非数字部分,无法这样做。求助< / p>

q=10
integrand<-function(x)(q*x^3)
integrate(integrand,lower=0,upper=10)

输出为25000,绝对误差< 2.8E-10

如何删除非数字部分?

1 个答案:

答案 0 :(得分:1)

str()是你的朋友:

> intval <- integrate(integrand,lower=0,upper=10)
> str(intval)
List of 5
 $ value       : num 25000
 $ abs.error   : num 2.78e-10
 $ subdivisions: int 1
 $ message     : chr "OK"
 $ call        : language integrate(f = integrand, lower = 0, upper = 10)
 - attr(*, "class")= chr "integrate"
> intval$value
[1] 25000

然后:

integrand<-function(x,q=10)(q*x^3)
tmpfun <- function(q) {
    integrate(integrand,lower=0,upper=10,q=q)$value
}
sapply(1:10,tmpfun)
##  [1]  2500  5000  7500 10000 12500 15000 17500 20000 22500 25000

我希望这是一个简化的例子,因为这个特定的答案更简单地通过(1)分析积分和(2)认识到标量倍数可以从积分中取出来得到:1:10*(10^4/4)得到同样的答案。