如何使绘图对用户输入做出反应?
在下面的超级简单的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