我有一个带有大量参数的应用程序。每个参数都有很多粒度,这使得找到所需的参数变得很痛苦。这使电抗部分不断地进行计算,从而减慢了速度。我添加了一个SubmitButton来解决上述问题,但随后又遇到了另一个问题。
下面是我构建的框架的简单复制。输入的参数从1到1000之间,代表我想要的 sample 。我想做的是能够执行上述操作,但也可以使用相同的参数集进行重采样。添加提交按钮后现在发生的事情是,除非我先单击“重新采样”然后单击“更新”按钮,否则它将使“重新采样”按钮无法使用。
有什么想法可以让它们分别工作?
shinyServer(function(input, output) {
getY<-reactive({
a<-input$goButton
x<-rnorm(input$num)
return(x)
})
output$temp <-renderPlot({
plot(getY())
}, height = 400, width = 400)
})
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(
sliderInput("num",
"Number of Samples",
min = 2,
max = 1000,
value = 100),
actionButton("goButton", "Resample"),
submitButton("Update View")
),
mainPanel(
tabsetPanel(
tabPanel("Heatmap",
plotOutput("temp")
),
tabPanel("About"),
id="tabs"
)#tabsetPanel
)#mainPane;
))
根据乔的答案进行编辑:
shinyServer(function(input, output) {
getY<-reactive({
isolate({a<-input$goButton
x<-rnorm(input$num)
return(x)})
})
output$temp <-renderPlot({
b<-input$goButton1
plot(getY())
}, height = 400, width = 400)
})
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(
sliderInput("num",
"Number of Samples",
min = 2,
max = 1000,
value = 100),
actionButton("goButton", "Resample"),
actionButton("goButton1","Update View")
),
mainPanel(
tabsetPanel(
tabPanel("Heatmap",
plotOutput("temp")
),
tabPanel("About"),
id="tabs"
)#tabsetPanel
)#mainPane;
))
最佳答案
答案是乔·郑在上面的评论中给出的,但是由于发现OP难以理解,我在下面明确地写下来,以供记录:
# ui.R
library("shiny")
shinyUI(
pageWithSidebar(
headerPanel("Example")
,
sidebarPanel(
sliderInput("N", "Number of Samples", min = 2, max = 1000, value = 100)
,
actionButton("action", "Resample")
)
,
mainPanel(
tabsetPanel(
tabPanel("Plot", plotOutput("plotSample"))
,
id = "tabs1"
)
)
)
)
# server.R
library("shiny")
shinyServer(
function(input, output, session) {
Data <- reactive({
input$action
isolate({
return(rnorm(input$N))
return(x)
})
})
output$plotSample <-renderPlot({
plot(Data())
} , height = 400, width = 400
)
})
请注意,在reactact()中具有input $ action,其中“action”是actionButton的inputID,足以触发新的图形渲染。因此,您只需要一个actionButton。
关于r - Shiny 的 react 性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17703711/