写一个函数来计算R中的PDF?

Mat*_*ete 1 r function probability

我要写一个函数来计算PDF,并且有人建议我使用if/elseif/else语句.但是每当我尝试这样做时,我都会收到错误消息,但我不确定我做错了什么?

这是函数应该计算的PDF:

fx = 0.3 if(0 <= x <1)
0.1 if(1 <= x <2)
0.25 if(2 <= x <3)
0.15 if(3 <= x <4)
0.2 if(4 <= x <5)
0否则

这是我的代码:

    fx = function(x)
    { 
    if (0<=x<1) {
    pdf=0.3
    } elseif (1<=x<2) {
    pdf=0.1
    } elseif (2<=x<3) {
    pdf=0.25
    } elseif (3<=x<4) {
    pdf=0.15
    } elseif (4<=x<5) {
    pdf=0.2
    } else 
    pdf=0

    pdf
    }
Run Code Online (Sandbox Code Playgroud)

我检查了我的'}',但它们看起来都很合适.我已经尝试将'pdf'更改为'fx',但这不起作用.我哪里错了?

42-*_*42- 6

fx <- function(x) c(0, 0.3,0.1,0.25,0.15,0.20, 0)[findInterval(x, c(-Inf, 0:5, Inf))]
Run Code Online (Sandbox Code Playgroud)

findInterval函数从第二个参数定义的区间序列中返回其第一个参数的位置,并可用于从向量中选择概率.支持域之外的值将根据请求选择为0值.在下限被关闭的情况下,它特别有用,因为cut函数的默认值是上限为闭合.