使用UI(输入$NAME)作为函数的输入,在Shining Server内创建函数
我试图创建模拟现金流的函数,但shiny似乎不接受在其中创建函数 shiny似乎不接受我使用来自用户界面的输入在其内部创建函数:使用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
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=功能(输入、输出){
suminput$
变量是可以用作已定义函数输入的变量,但不能用于函数创建本身;请参阅@MatCordTo的答案