2014-12-22 1 views
0

나는 반짝이에 조금 익숙하지만 내 인생을 감당할 수 없다. 슬라이더 입력 값을 이름있는 목록으로 구성하는 방법을 알아 내라. 지금은 11 개의 입력을 허용하는 UI를 설정했습니다.반짝이는 슬라이더 입력

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 등의 값)이 너무 명명 된 숫자 목록을 출력을 생성하는 데 필요한 수학 함수를 제공 할 수 있습니다. server.R와 입력 변수에서 호출되는

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) 

} 

가 입력 $로 설정 : 현재

, I는 입력 변수에 따라 명명 된 목록을 반환하는 함수 PARAMS이 슬라이더에서 등? 평가에

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 
    ) 
}) 

오류 (대체 (EXPR), 데이터 enclos = parent.frame()) 다시 유형 '폐쇄'

의 무효 'envir'인자, I는 입력 슬라이더 값 필요 슬라이더의 이름 = 값이고 목록의 이름은 함수에서 호출 할 수있는 명명 된 목록의 일부입니다. 어떻게하면 가장 쉽게이 작업을 수행 할 수 있습니까? 감사!

답변

1

이 2 단계 프로세스가 효과가 있다고 생각합니다.

먼저 - reactiveValues 개체에이 모든 것을 보관하십시오. 다음과 같이 값을 추가 할 수 있습니다.

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

등등.

그럼 당신이 기대하는 이름이있을 것이다 목록을

reactiveValuesToList(Values) 

목록을 만들기 위해 reactiveValuesToList를 사용합니다. Values$K 값의 이름은 "K"입니다. 목록이 필요한 곳에 넣을 수 있습니다.

+0

도움을 제공해 주셔서 감사합니다. 이것을 반응식으로 포장해야합니까? I는 (두 개의 파라미터에 연결된) 지금있다 : '파라미터 <- reactiveValues ​​()를 파라미터 $ N = 입력 $ 않음 파라미터 $ K = 입력 $ K PARAMS <- reactiveValuesToList은' ((매개 변수)를 분리) 그러나 이것을 얻으십시오 : '.getReactiveEnvironment() $ currentContext()의 오류 : 액티브 리 액티브 컨텍스트없이 작업이 허용되지 않습니다. ' – markowonk

+0

정말로 값을 분리해야하는 경우 외부에 격리를 시도하십시오 :'params <-isolate (reactiveValuesToList (parameters))' –

+0

고마워요 @ 존콩! 이걸 반응식() 표현식으로 묶어야합니까? – markowonk