在R中将积分值保存到数组中

3
我想把整数值保存在一个数组中。比如从q=1到q=10在下面的程序中。但由于输出中有非数字部分,所以无法这样做。请帮忙解决。
q=10
integrand<-function(x)(q*x^3)
integrate(integrand,lower=0,upper=10)

输出为25000,绝对误差小于2.8e-10

如何去除非数字部分?


解析它并仅存储您想要的第一部分。 - duffymo
1个回答

4

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"

因此,您可以看到需要使用value成员:

> 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) 得到相同的答案。


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