我有以下闪亮的脚本
library(shiny)
ui <- fluidPage(
actionButton("go", "Go"),
#This should trigger a default 100 hist
actionButton("go", "Go"),
numericInput("n", "n", 50),
plotOutput("plot")
)
server <- function(input, output) {
randomVals <- eventReactive(input$go, {
runif(input$n)
})
randomVals2 <- eventReactive(input$go, {
runif(n = 100)
})
output$plot <- renderPlot({
hist(randomVals())
})
output$plot2 <- renderPlot({
hist(randomVals2())
})
}
shinyApp(ui, server)
这为我提供了一个按钮,我可以按下来获得直方图。它工作正常。但是,我还想在它旁边添加另一个按钮,它给出一个默认n = 100的直方图(仅用于学习目的)。
但是第二个按钮似乎不起作用。
有关应该更改什么以触发它的任何想法?
答案 0 :(得分:1)
@PorkChop已正确指出代码中的一个错误,即两个按钮的重复ID。此外,您的UI功能中没有定义plot2
。
但是,我想评论所定义的功能有点多余。原则上,两个按钮应该具有相同的功能(生成随机数据并绘制其直方图),具有不同的尺寸参数。
最好的方法是定义一个功能,完成所需的全部功能,并使用每个按钮的特定参数调用它:
library(shiny)
ui <- fluidPage(
actionButton("go_hist", "Go"),
actionButton("go_hist_100", "Go with 100"), #This should trigger a default 100 hist
numericInput("n", "n", 50),
plotOutput("plot")
)
server <- function(input, output) {
plotHist = function(size){
randomData = runif(size)
output$plot = renderPlot(hist(randomData, main = paste("n =", size)))
}
observeEvent(input$go_hist, plotHist(input$n))
observeEvent(input$go_hist_100, plotHist(100))
}
shinyApp(ui, server)
通过这种功能化,您的代码将更易于阅读,调试和维护。
答案 1 :(得分:0)
你不能有多个具有相同ID的按钮,请更改按钮名称
actionButton("go", "Go"),
#This should trigger a default 100 hist
actionButton("go1", "Go"),