如何在向量上积分作为R中的输入?

如何在向量上积分作为R中的输入?,r,R,我有以下练习要解决: Distribution <- function(f,a,b) ... > f <- function(x) 0.5*sin(x)*(x>=0)*(x<=pi) > F <- Distribution (f,0,pi) > F(c(-100,0,1,2,pi,100)) [1] 0.0000000 0.0000000 0.2298488 0.7080734 1.0000000 1.0000000 非常感谢。您可以在函数定义

我有以下练习要解决:

Distribution <- function(f,a,b) ...

> f <- function(x) 0.5*sin(x)*(x>=0)*(x<=pi)
> F <- Distribution (f,0,pi)
> F(c(-100,0,1,2,pi,100))
[1] 0.0000000 0.0000000 0.2298488 0.7080734 1.0000000 1.0000000

非常感谢。

您可以在函数定义周围放置矢量化参数(代码未经测试):

分布b)0
else积分(f,下限=a,上限=x)$value)
)
Distribution <- function(f, a, b){
    function(x){
     if(x < a || x > b)
        {
            0
        }
    else{               
        Vectorize(integrate(function(x) f(x), lower = a, upper = x)$value)         
}
}
}
f <- function(x) 0.5*sin(x)*(x>=0)*(x<=pi)
F <- Distribution(f,0,pi)
> F(c(-100,0,1,2,pi,100))
 [1] 0.0000000 0.0000000 0.2298488 0.7080734 1.0000000 1.0000000
Distribution <- function(f, a, b)
    Vectorize(function(x)
        if(x < a || x > b) 0
        else integrate(f, lower = a, upper = x)$value) 
    )