empireisme123

shiny

Mar 10th, 2020
845
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.34 KB | None | 0 0
  1. require(shiny)
  2. require(plotly)
  3. library(ggplot2)
  4. ui <- fluidPage(
  5.   titlePanel(title=h4("簡易儲蓄險NPV計算", align="center")),
  6.   actionButton("go", "Go"),
  7.   numericInput("yearpay", "一年要繳多少錢(萬)", 10),
  8.   numericInput("year", "要繳幾年", 20),
  9.   numericInput("yearget", "期滿後一年可得的報酬(萬)", 12),
  10.   numericInput("restyear", "期滿後預期可活幾年", 40),
  11.   numericInput("rate", "你認為的通貨膨脹率", 0.02),
  12.   plotOutput("plot")
  13. )
  14.  
  15. server <- function(input, output) {
  16.   npvplot <- function(yearpay,yearget,rate,year,restyear){
  17.    
  18.     npv<-function(yearpay,yearget,rate,year,restyear){
  19.      
  20.       benefit<- sum(yearget/((1+rate)^seq(year-1, year+restyear-1)))
  21.       cost <- sum  (yearpay/((1+rate)^seq(0, year-1)))        
  22.       return(benefit-cost)
  23.     }
  24.    
  25.     benefit <- vector("numeric",length = 50)
  26.    
  27.     for(i in 1:50){
  28.      
  29.       benefit[i]<- npv(yearpay,yearget,rate,year,i)
  30.      
  31.     }
  32.    
  33.     restlife <- c(1:50)
  34.     dat <- data.frame(restlife,benefit)
  35.     return(dat )
  36.     #qplot(restlife,benefit,geom = "line")
  37.   }
  38.   value<- eventReactive(input$go, {
  39.     npvplot(input$yearpay,input$yearget,input$rate,input$year,input$restyear)
  40.   })
  41.   output$plot <- renderPlot({
  42.     ggplot(value(),aes(x=restlife,y=benefit))+geom_line()
  43.   })
  44. }
  45.  
  46. shinyApp(ui, server)
Advertisement
Add Comment
Please, Sign In to add comment