簡體   English   中英

隨着函數的變化在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])

...

這些都不起作用...

好沮喪...請幫助!

我將在繪制之前將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))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM