我想在数组中保存积分值。在下面的程序中,从q = 1到q = 10.但是由于输出非数字部分,无法这样做。求助< / p>
q=10
integrand<-function(x)(q*x^3)
integrate(integrand,lower=0,upper=10)
输出为25000,绝对误差< 2.8E-10
如何删除非数字部分?
答案 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)
得到同样的答案。