2014-12-22 67 views
0

所以我對Shiny有點新,但不能爲我的生活,弄清楚如何將滑塊輸入值組織到一個命名列表。現在,我有一個UI設置,允許11個輸入。閃亮的滑塊輸入到命名列表

library(shiny) 

shinyUI(pageWithSidebar(
    headerPanel("Quorom Sensing Model"), 
    sidebarPanel(
sliderInput("n", "Hill Coefficient:", 
      min=0, max=10, value=2, step=0.5), 
sliderInput("K", "Max Contribution to lacI transcription:", 
      min=0, max=50, value=20, step=1), 
sliderInput("k0_AI", "Initial Synthesis Rate of AI:", 
      min=0, max=5, value=3.5, step=0.1), 
sliderInput("k1_AI", "Repressor dependent rate of synthesis of AI:", 
      min=0, max=1, value=.033, step=0.001), 
sliderInput("eta", "diffusion rate of AI across cell membrane:", 
      min=0, max=5, value=.7, step=0.1), 
sliderInput("k_deg", "extracellular AI degredation Rate:", 
      min=0, max=1, value=.525, step=0.001), 
sliderInput("k_diff", "extracellular diffusion rate of AI:", 
      min=0, max=10, value=2.1, step=0.1), 
sliderInput("alpha_tetR", "Alpha tetR:", 
      min=0, max=50, value=24, step=1), 
sliderInput("alpha_cI", "Alpha cI:", 
      min=0, max=50, value=24, step=1), 
sliderInput("alpha_lacI", "Alpha lacI:", 
      min=0, max=50, value=24, step=1), 
sliderInput("beta", "Ratio of protein decay to mRNA decay rate:", 
      min=0, max=10, value=1.05, step=0.05) 
), 
    mainPanel(
plotOutput("timeSeries"), 
plotOutput("timeSeries2") 
)) 
) 

因此,這些滑塊輸入需要送入命名列表,其中參數(命名列表)= C(N =輸入$ N,K =輸入$ K,等的值),使得我可以將指定的號碼列表輸入到生成輸出所需的數學函數中。

現在,我具備的功能參數,可以返回基於輸入變量命名列表:

params <- function(n = 2, 
       K=20, 
       k0_AI=3.5, 
       k1_AI=0.033, 
       eta=0.7, 
       k_deg=0.525, 
       k_diff=2.1, 
       alpha_tetR=24, 
       alpha_cI=24, 
       alpha_lacI=24, 
       beta=1.05){ 
    paramlist <- c(n = n, 
      K = K, 
      k0_AI = k0_AI, 
      k1_AI = k1_AI, 
      eta = eta, 
      k_deg = k_deg, 
      k_diff = k_diff, 
      alpha_tetR = alpha_tetR, 
      alpha_cI = alpha_cI, 
      alpha_lacI = alpha_lacI, 
      beta = beta) 
    return(paramlist) 

} 

這是從server.R和輸入變量稱爲被設置爲輸入$等滑塊?

library(shiny) 
library(ggplot2) 
library(reshape2) 
library(deSolve) 
source("params.R") 
shinyServer(function(input,output){ 


parameters = reactive({ 
     params(n = input$n, 
     K = input$K, 
     k0_AI = input$k0_AI, 
     k1_AI= input$k1_AI, 
     eta = input$eta, 
     k_deg = input$k_deg, 
     k_diff = input$k_diff, 
     alpha_tetR = input$alpha_tetR, 
     alpha_cI = input$alpha_cI, 
     alpha_lacI =input$alpha_lacI, 
     beta = input$beta 
    ) 
}) 

錯誤的eval(代用品(表達式),數據,enclos = parent.frame()): 無效 'ENVIR' 類型 '閉合'

的說法再次,我所需要的輸入值的滑塊成爲命名列表的一部分,滑塊的名稱=列表的值和名稱可以從函數中調用。我怎麼能最輕鬆地做到這一點?謝謝!

回答

1

我認爲這2個步驟的過程將起作用。

首先 - 製作一個reactiveValues對象來保存所有這些。您可以隨時添加數值:

Values <- reactiveValues() 
Values$n <- input$n 
Values$K <- input$K 

等等。

然後使用reactiveValuesToList做出的排行榜

reactiveValuesToList(Values) 

名單將有你所期望的名稱。 Values$K的值將被命名爲「K」等。 你可以把它放在需要清單的地方。

+0

非常感謝您的幫助!我是否需要用反應式表達來包裝它?我現在有這樣的(級聯以兩個參數): '參數< - reactiveValues() 參數$ N =輸入$ N 參數$ K =輸入$ķ PARAMS < - reactiveValuesToList(分離物(參數))' 但是得到這個: '.getReactiveEnvironment()中的錯誤$ currentContext(): 沒有一個活動的被動上下文,操作是不允許的。 – markowonk

+0

如果你真的需要隔離這些值,試着把隔離放在外面:'params <-isolate (reactiveValuesToList(parameters))' –

+0

Thanks @JohnP!我是否需要將它封裝在一個反應​​式()表達式中? – markowonk