如何使绘图对用户输入做出反应?

在下面的超级简单的MWE代码中,我试图让绘图对用户的滑块输入“periods”做出反应。我尝试了observeEvent的各种迭代,但都没有成功。有没有人能帮我把它做成反应性的?

该图应该在y轴上显示endBal,在x轴上显示periods

此外,在下面的MWE代码行中,res <- Reduce(f,seq(periods),init=beginBal,accumulate=TRUE)没有从滑块输入中提取周期的值。相反,为了让MWE运行演示,我必须在代码顶部的“定义向量”部分手动定义periods变量(例如periods <- 5)。你知道为什么这部分不能工作吗?

library(shiny)

### Define vectors ##############################################################
beginBal       <- 1000
yield_vector   <- c(0.30,0.30,0.30,0.30,0.30,0.28,0.26,0.20,0.18,0.20)
npr_vector     <- c(0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30)
mpr_vector     <- c(0.20,0.20,0.20,0.20,0.20,0.20,0.20,0.20,0.20,0.20)
default_vector <- c(0.10,0.10,0.10,0.10,0.10,0.09,0.08,0.07,0.06,0.05)
### End define vectors ##########################################################

ui <- fluidPage(
  sliderInput(inputId = "periods",
              label = "Periods:",
              min = 1,
              max = 10,
              value = 5),
  plotOutput(outputId = "balancePlot")
  ) # close fluid page

server <- function(input,output){

  ### Generates data for plotting ###############################################
  f      <- function(x,y){x*(1+npr_vector[y]-mpr_vector[y]-default_vector[y]/12)}
  res    <- Reduce(f,seq(periods),init=beginBal,accumulate=TRUE)
  b      <- head(res,-1)
  endBal <- res[-1]
  ### End data for plotting ##################################################### 
    
  output$balancePlot <- renderPlot({plot(endBal)})
  
  } # close server

shinyApp(ui = ui, server = server)

转载请注明出处:http://www.cntdm.com/article/20230529/1044995.html