随着函数的变化在 R 中绘制绘图

Draw a plot in R as the function varies

我有一个名为 prob 的代码。

prob<-function(k){
  start=1
  for(i in 1:k-1){
    cumm=start*(1-i/365)
    start=cumm
  }
  return(start)
}

然后,我创建了这个函数,opp。

opp<-function(a){
  1-prob(a)
}

现在,我想绘制从 1 到 25 的 opp。 比如我想看opp(1), opp(2), opp(3), opp(4)...., opp(25)

我试过了

plot(opp(a=x),from=1,to=25)

plot(opp,from=1,to=25)

plot(1:25,opp[1:25])

...

none 这些作品...

很沮丧...请帮忙!

我会在绘图之前修复 opp 函数以进行矢量化。

您可以 Vectorize(opp) 进行快速修复:

prob<-function(k){
  start=1
  for(i in 1:k-1){
    cumm=start*(1-i/365)
    start=cumm
  }
  return(start)
}

opp<-function(a){
  1-prob(a)
}

vopp <- Vectorize(opp)

vopp(1:25)

#  [1] 0.000000000 0.002739726 0.008204166 0.016355912 0.027135574 0.040462484
#  [7] 0.056235703 0.074335292 0.094623834 0.116948178 0.141141378 0.167024789
# [13] 0.194410275 0.223102512 0.252901320 0.283604005 0.315007665 0.346911418
# [19] 0.379118526 0.411438384 0.443688335 0.475695308 0.507297234 0.538344258
# [25] 0.568699704

或者,更 "R" 的方式是:

opp2 <- function(k) 1 - cumprod(1 - (k - 1) / 365)

opp2(1:25)
# [1] 0.000000000 0.002739726 0.008204166 0.016355912 0.027135574 0.040462484
# [7] 0.056235703 0.074335292 0.094623834 0.116948178 0.141141378 0.167024789
# [13] 0.194410275 0.223102512 0.252901320 0.283604005 0.315007665 0.346911418
# [19] 0.379118526 0.411438384 0.443688335 0.475695308 0.507297234 0.538344258
# [25] 0.568699704

然后都给我这个

plot(opp2(1:25))
plot(vopp(1:25))