使用UI(输入$NAME)作为函数的输入,在Shining Server内创建函数

使用UI(输入$NAME)作为函数的输入,在Shining Server内创建函数,r,shiny,R,Shiny,我试图创建模拟现金流的函数,但shiny似乎不接受在其中创建函数 shiny似乎不接受我使用来自用户界面的输入在其内部创建函数: library(shiny) library(DT) library(FinCal) ui <- fluidPage( numericInput("investimento_inicial",0,0), numericInput("periodo",0,0), numericInput("quant

我试图创建模拟现金流的函数,但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)
  }
  
  
  
})
  
}
库(闪亮)
图书馆(DT)
图书馆(FinCal)

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

server = function(input, output){

        sum           <- function(x,y){x+y}
        output$print1 <- renderPrint({sum(input$x,input$y)})
}
server=功能(输入、输出){
sum
input$
变量是可以用作已定义函数输入的变量,但不能用于函数创建本身;请参阅@MatCordTo的答案