昨天我問了這個問題(Update two sets of radiobuttons reactively - shiny),但也許這太亂了,無法得到回覆。我已經剝離下來的問題:爲什麼我不能得到兩套單選按鈕來被動更新:更新兩套單選按鈕 - 閃亮
server.R:
# Create example data
Wafer <- rep(c(1:3), each=3)
Length <- c(1,1,2,1,1,1,3,5,1)
Width <- c(3,1,6,1,1,1,1,1,6)
dd <- data.frame(Wafer, Length, Width)
shinyServer(function(input, output, session){
# Get Lengths from user input
a <- eventReactive(input$do, {
subset(dd, Wafer %in% input$wafer, select = Length)
})
# Get Widths from user input
b <- eventReactive(input$do, {
subset(dd, Wafer %in% input$wafer, select = Width)
})
#Observe and update first set of radiobuttons based on a(). Does
#render
observe({
z <- a()
updateRadioButtons(session, "length", choices = unique(z$Length), inline=TRUE)
})
#Observe and update second set of radiobuttons based on b(). Does
#not render
observe({
z <- b()
updateRadioButtons(session, "width", choices = unique(z$Width), inline=TRUE)
})
output$l <- renderDataTable({ a() })
output$w <- renderDataTable({ b() })
})
ui.R:
library(markdown)
shinyUI(fluidPage(
titlePanel("Generic grapher"),
sidebarLayout(
sidebarPanel(
numericInput("wafer", label = h3("Input wafer ID:"), value = NULL),
actionButton("do", "Search wafer"),
radioButtons("length", label="Length", choices=""),
radioButtons("width", label="Width", choices = "")
),
mainPanel(
dataTableOutput(outputId="l"),
dataTableOutput(outputId="w")
)))
)
在上面,我只能得到一組單選按鈕來響應(「長度」)。但是,如果我註釋出長度爲observe
,那麼寬度就會起作用,所以我的代碼必須單獨運行。也許我錯過了一些簡單的東西?
好吧,所以如果我改變一組單選按鈕是一個selectInput並將相應的updateRadioButtons更改爲updateSelectInput,那麼它就可以工作。我可以使用它,但如果任何人都可以指向正確的方向,我寧願選擇兩組單選按鈕。 – Pete900
可能是一個錯誤,我改變了'updateRadioButtons'的順序,只有第一個工作... – NicE
謝謝尼克。有什麼我可以做的嗎?也許是RStudio頁面或Git的東西?我從來沒有做過這樣的事情,所以不知道正確的禮節。 – Pete900