我想将整数值保存在数组中。在下面的程序中说,从q=1到。q=10但由于输出带有非数字部分,我不能这样做。
q=10
integrand<-function(x)(q*x^3)
integrate(integrand,lower=0,upper=10)
Run Code Online (Sandbox Code Playgroud)
输出为“25000,绝对误差 < 2.8e-10”
如何删除非数字部分?
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"
Run Code Online (Sandbox Code Playgroud)
所以你可以看到你需要这个value元素:
> intval$value
[1] 25000
Run Code Online (Sandbox Code Playgroud)
然后:
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
Run Code Online (Sandbox Code Playgroud)
我希望这是一个简化的例子,因为通过(1)分析积分和(2)认识到可以从积分中取出标量倍数,可以更简单地获得这个特定的答案:1:10*(10^4/4)得到相同的答案。
| 归档时间: |
|
| 查看次数: |
4187 次 |
| 最近记录: |