1
我想在閃亮使用validate(),但我每次驗證命令發現錯誤時不斷遇到問題。我試圖繪製偶爾某些子類別的數據可能沒有任何值的情況(即,如果類別是顏色,則可以選擇「綠色」,但有時數據集不會包含類別「綠色」中的任何行)。R閃亮與驗證:繪圖只調整大小窗口後刷新
每當我驗證的條件恢復爲false時,錯誤消息將正確打印。但是,當我重新選擇一個新值並更新時,只有在手動調整窗口大小後纔出現新的繪圖,而不是像在單擊「更新」之後顯示的那樣。
colors = c("green","blue","red")
library(shiny)
ui <- fluidPage(
tabsetPanel(
tabPanel("Info",
selectInput(inputId = "color",label = "color:",
choices = colors,
selected = colors[2],
multiple = FALSE),
actionButton(inputId = "go",
label = "Update"),
plotOutput("plot", width = "100%", height = 700,
brush = brushOpts(id = "plot_brush",fill = "green",clip = FALSE))
)
)
)
server <- function(input, output,session) {
data = eventReactive(input$go, {
var1 = rnorm(20,5)
cat1 = (c(rep("red",10),rep("blue",10)))
data = cbind.data.frame(var1,cat1)
plotdata = data[which(data$cat1 ==isolate(input$color)),]
}
)
output$plot = renderPlot({
validate(
need( (isolate(input$color) %in% c("red","blue")) , "No color of this type ")
)
plotdata = data()
plot(plotdata$var1, col = isolate(input$color))
})
}
shinyApp(ui = ui,server = server)
僅供參考我使用的閃亮版本0.13.1,R版本3.2.3
這樣做可以修復它,但我喜歡使用隔離語句,以便在按下「更新」按鈕之前顏色不會更改。任何想法爲什麼調整窗口的大小是觸發這種情況下的變化,而不僅僅是更新按鈕? – Peter
您可以保留'isolate'只需添加按鈕的輸入,以便觸發繪圖。我的猜測是,當你調整大小時,閃亮必須重新構圖,所以它運行'renderPlot',然後重新評估'validate'。 –
輝煌!謝謝,我沒有意識到你可以把actionbutton放在renderplot裏面。 – Peter