【发布时间】:2020-07-04 12:59:43
【问题描述】:
我需要有关以下闪亮应用服务器功能的帮助。我的问题是values$npv 总是显示为空,即使是0。我认为fun 功能没有做正确的事情,我没有想法。
如果我用paste("Net Present Value:", isolate(input$val_inv)) 对renderText 进行硬编码,我总是有结果,但不是我想要的结果,这让我猜想fun 函数不能正常工作。
inline_numericInput=function(ni){
tags$div( class="form-inline",ni)
}
ui <- shinyUI(fluidPage(
tags$head(tags$style("#side_panel{
padding-left:10px;
}
.form-group {
margin-bottom: 15px !important;
}
.form-inline .form-control {
width:80%;
}
label{ width:30px;}
")),
titlePanel("Example"),
sidebarLayout(
sidebarPanel(width = 4,id="side_panel",
fluidRow(
column(6, inline_numericInput(numericInput("val_inv", label = "Inv:", value = 0))),
),
fluidRow(
column(6, inline_numericInput(numericInput("val_r", label = "R:", value = 0))),
),
fluidRow(
column(6, inline_numericInput(numericInput("val_n", label = "N:", min = 50,value = 50))),
column(6, inline_numericInput(actionButton("btn_calcnpv", label = "Compute NPV")))
)
),
mainPanel(
p('Results:'),
textOutput("val_npv")
)
)
))
server <- function(input, output) {
values <- reactiveValues()
values$npv <- 0
observe({
input$btn_calcnpv
fun <- function(n){
cf <- 0
for (i in 1:n){
cf <- cf + isolate(input$val_inv)/(1+input$var_r)**i
}
cf
}
values$npv <- fun(isolate(input$val_n))- isolate(input$val_inv)
#values$npv <- values$npv - isolate(input$val_inv)
})
output$val_npv <- renderText({
if(input$btn_calcnpv)
paste("Net Present Value:", values$npv)
else ""
})
}
shinyApp(ui, server)
【问题讨论】:
-
请提供一个工作示例。
-
除了之前的评论,看here了解如何制作可重现的例子
-
我已经给出了整个代码。
-
请检查输入变量的名称:val_r 与 var_r。此外,我认为输入变量是字符。也许,你必须强迫他们使用数字。