2016-05-11 106 views
0

我最近開始使用R shiny並在反應環境中使用if語句。我閱讀其他帖子,但沒有完全找到我需要的。在R中輸入後分配值Shiny

假設有三個電話計劃,A,B和C.每個計劃都有固定成本和每分鐘成本。鑑於使用情況和計劃,我們想告訴用戶總成本。因此,在UI,我們有:

selectInput("plan", "Choose phone plan", choices = c("A", "B", "C")) 

我的問題是說,後是choosen,我想定義變量A = 10美元的固定成本,每分鐘成本= 1美元。類似的B,C然後我可以顯示總成本。

我不知道如何計劃後選擇固定成本和可變成本。爲了簡化,我不想提示用戶每個計劃的固定和可變成本。任何有關應該在服務器文件中進行的建議?

我試圖做的:

if(input$choices == "A"){fixcost = 10, mincost = 1} 
output$cost = renderText(fixcost+mincost*input$use) 
+0

如果你已經知道一切代價,'所有這些之間之開關。像例如'fixcost < - 開關(輸入$選擇,「A」= 10,「B」= 20,「C」= 110)'。與'mincost'一樣,然後進行計算。 –

回答

0

您可以創建字典 像

dict=data.frame(type=c("A","B","C"),fixcost =c(10,11,12),mincost=c(1,2,3)) 
ui=shinyUI(

    fluidPage( 
    selectInput("plan", "Choose phone plan", choices = c("A", "B", "C")) 
    , 
    numericInput("use","use",0), 
    textOutput("txt"), 
    textOutput("cost") 

) 
) 
server=shinyServer(function(input, output,session) { 

    output$txt=renderPrint({ 
    paste("fixcost =",dict$fixcost[dict$type==input$plan] ," mincost =",dict$mincost[dict$type==input$plan]) 
    }) 
    output$cost = renderText(dict$fixcost[dict$type==input$plan]+dict$mincost[dict$type==input$plan]*input$use) 

}) 

shinyApp(ui,server) 
+0

該解決方案有效。我遇到的一個問題是,當我在shiny.io上發佈應用程序時,出現「找不到對象字典」的錯誤,但在發佈之前我沒有收到這個錯誤,它工作正常。 – Newbie

+0

您是否嘗試將dict = data.frame(type = c(「A」,「B」,「C」),fixcost = c(10,11,12),mincost = c(1,2,3 ))'到服務器功能? – Batanichek