我正在Shiny中创建一个调查,我希望随机绘制单选按钮代表的选择。请参见下面的示例代码:
library(shiny)
choices<-c("a","b","c","d","e")
x1<-sample(choices,2)
x2<-sample(choices,2)
ui<-fluidPage(
radioButtons("q1","Which do you prefer?", choices=c(x1,"No Preference"),selected=""),
radioButtons("q2","Which do you prefer?", choices=c(x2,"No Preference"),selected="")),
server <- function(input, output) {
# Not important
})
shinyApp(ui = ui, server = server)
当我在本地运行该应用程序时,每次我运行该应用程序时(根据预期)将选择一组不同的选项。但是,一旦我发布到shinyapps.io,则每次的选择都是相同的(因为x1
中的每次运行都相同)。我该如何做,以便每次应用程序打开时都从选择集中提取一个新样本?
答案 0 :(得分:1)
您可能知道,Shiny服务器实现了缓存以提高系统利用率。您遇到的问题是x1
变量正在用户之间采样和缓存。
解决此问题的方法是将选项抽样到reactiveValue
中,然后在页面加载时动态更新单选按钮。
或者,您可以尝试使用this approach:
ui <- function(req) {
fluidPage(
x1<-sample(choices,2)
x2<-sample(choices,2)
radioButtons("q1","Which do you prefer?", choices=c(x1,"No Preference"),selected=""),
radioButtons("q2","Which do you prefer?", choices=c(x2,"No Preference"),selected=""))
...
)
}