【问题标题】:Create functions inside Shiny Server with UI(input$NAME) as input for the function在 Shiny Server 中创建函数,使用 UI(input$NAME) 作为函数的输入
【发布时间】:2020-09-17 01:13:59
【问题描述】:

我试图创建函数来模拟现金流,似乎 Shiny 不接受在其中创建函数 似乎 Shiny 不接受我在其中使用来自用户界面的输入来创建函数:

library(shiny)
library(DT)
library(FinCal)

ui <- fluidPage(
  numericInput("investimento_inicial",0,0),
  numericInput("periodo",0,0),
  numericInput("quantidade_mensal",0,0),
  numericInput("preco",0,0),
  numericInput("custo_fixo",0,0),
  numericInput("salario_funcionario",0,0),
  numericInput("numero_funcionarios",0,0),
  numericInput("taxa_mensal",0,0),
  numericInput("redutor",0,0),
  numericInput("tempo_inicio",0,0),
  numericInput("capacidade",0,0),
  numericInput("chancesucesso",0,0),
  numericInput("tempo_final",0,0),
  numericInput("reducao_lucrounitariomeio",0,0),
  numericInput("reducao_qtdmeio",0,0),
  numericInput("aumento_cfmeio",0,0),
  numericInput("reducao_lucrounitariofinal",0,0),
  numericInput("reducao_qtdfinal",0,0),
  numericInput("aumento_cffinal",0,0),
  numericInput("venda_final",0,0),
  numericInput("iniciopreco",0,0),
  numericInput("finalpreco",0,0),
  numericInput("iniciocv",0,0),
  numericInput("finalcv",0,0),
  numericInput("iniciocf",0,0),
  numericInput("finalcf",0,0),
  numericInput("iniciodemanda",0,0),
  numericInput("finaldemanda",0,0),
  verbatimTextOutput("table")
  
)

server <- function(input, output, session) {
  
  output$table=renderPrint({  
  
  risco2<-function(input$investimento_inicial,input$periodo,input$quantidade_mensal,input$preco,input$custo_fixo,input$custo_unitario,
                   input$salario_funcionario,input$numero_funcionarios,input$taxa_mensal,input$redutor,input$tempo_inicio,input$capacidade,input$chancesucesso,input$tempo_final,
                   input$reducao_lucrounitariomeio,input$reducao_qtdmeio,input$aumento_cfmeio,input$reducao_lucrounitariofinal,input$reducao_qtdfinal,input$aumento_cffinal,input$venda_final,
                   input$iniciopreco,input$finalpreco,input$iniciocv,input$finalcv,input$iniciocf,input$finalcf,input$iniciodemanda,input$finaldemanda ){
    input$custo_fixo<-input$custo_fixo+input$salario_funcionario*input$numero_funcionarios
    lunitario<-input$preco-input$custo_unitario
    
    duracao1<-(input$periodo-input$tempo_inicio-input$tempo_final)/2
    cashflow<-c(-input$investimento_inicial,
                rep(c(sum(lunitario*input$quantidade_mensal-(lunitario*input$quantidade_mensal*input$redutor))-input$custo_fixo),input$tempo_inicio), 
                rep(c(sum(lunitario*input$quantidade_mensal)-input$custo_fixo),duracao1), 
                rep(c(sum((1-input$reducao_lucrounitariomeio)*lunitario*input$quantidade_mensal*(1-input$reducao_qtdmeio))-input$custo_fixo*(1+input$aumento_cfmeio)),duracao1),
                rep(c(sum((1-input$reducao_lucrounitariofinal)*lunitario*(input$quantidade_mensal*(1-input$reducao_qtdfinal)))-input$custo_fixo*(1+input$aumento_cffinal) ),input$tempo_final),
                input$venda_final)
    
    npv(input$taxa_mensal,cashflow)
  }
  
  
  
})
  
}

object 'input' not found

如何使用用户界面输入在闪亮内部创建适当的功能?

【问题讨论】:

  • shiny input$&lt;name&gt; 变量是可以用作已定义函数的输入的变量,但不能在函数创建本身中使用;查看@MatCordTo 的答案

标签: r shiny


【解决方案1】:

我认为您可以先在服务器内部创建函数,然后将输入作为您之前创建的函数的参数输入。

server = function(input, output){

        sum           <- function(x,y){x+y}
        output$print1 <- renderPrint({sum(input$x,input$y)})
}

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 2017-01-30
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多