[英]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.