2014-07-10 17 views

Trả lời

1

Tôi gặp sự cố tương tự, mặc dù các nút không được tạo động trong trường hợp của tôi. Nó không phải là rõ ràng từ câu hỏi nếu nhấn mạnh là trên khía cạnh "được tạo động". Nếu vậy câu trả lời của tôi không giúp bạn nhiều ...

Để đơn giản hóa câu trả lời của tôi giảm được vấn đề như sau:

  • Tôi có hai actionButtons trong giao diện người dùng của tôi (id="increase"id="decrease") và tôi có một biến số nguyên (var) và đầu ra văn bản (id="actual_value") để hiển thị giá trị thực. Một trong các nút nên tăng giá trị của một cái khác nên giảm giá trị và rõ ràng đầu ra sẽ hiển thị giá trị cập nhật.

Giải pháp là:

shinyServer(function(input, output, session) { 
     increase <- reactive({ 
      if(input$increase == 0) return() 
      var <- var + 1 
      }) 

      decrease <- reactive({ 
      if(input$decrease == 0) return() 
      var <- var - 1 
      }) 

      actual.value <- reactive({ 
      increase() 
      decrease() 
      var 
      }) 

      output$actual_value <- renderText({ 
      paste("Actual value is: ", actual.value()) 
      }) 
    }) 

Vì vậy, lời giải thích là có hai đầu vào phản ứng (ví dụ, các nút), và hai biểu thức phản ứng tương ứng (increasedecrease). Biểu thức phản ứng thứ ba (actual.value) phụ thuộc vào hai giá trị đầu tiên và trả về giá trị thực tế của var. Sản lượng phản ứng phụ thuộc vào điều này.

Vì vậy, bạn tạo hai biểu thức phản ứng riêng biệt cho hai nút (increasedecrease) và sau đó multiplex chúng trong một phần ba (actual.value).

Tác phẩm này, tuy nhiên tôi không biết đây có phải là cách tiếp cận tốt nhất để giải quyết vấn đề như vậy hay không.

Các vấn đề liên quan