我正在尝试为班级写一个Shiny应用程序,我正在教这个应用程序,从数据集中抽取一个随机样本并计算总结统计。每当我按下UI上的重置按钮时,都应该对新子集进行采样。这里是我的代码到目前为止:R Shiny not randomizing
shinyServer(function(input, output) {
# Output for Ch. 1 Problems: Central Tendency
# Prepare data
observeEvent(input$Ch1.Prob.CT.reset, {
Ch1.Prob.CT.n <- sample(8:12, 1)
Ch1.Prob.CT.obs <- sample(1:nrow(cars), Ch1.Prob.CT.n)
})
data <- eventReactive(input$Ch1.Prob.CT.reset, {
cars[Ch1.Prob.CT.obs, 'dist', drop=F]
})
# Outputs
output$Ch1.Prob.CT.Data <- renderDataTable({
data()
})
output$Ch1.Prob.CT.Mean.out <- renderUI({
if (is.na(input$Ch1.Prob.CT.Mean.in)) { # Error checking
p("No answer provided")
} else if (round(input$Ch1.Prob.CT.Mean.in, digits = 4) == round(mean(Ch1.Prob.CT.data[,1]), digits = 4)) {
p("Correct", style = "color:green")
} else {
p("Incorrect", style = "color:red")
}
})
})
问题是,样本不是随机的;每次都是一样的。即使按下重置按钮,样本也与之前的样本完全相同。
为什么Shiny不随机化?我怎样才能使它再次随机化?
这是不建议使用s在闪闪发光的元素名称(例如。使用'Ch1_Prob_CT_reset'而不是'Ch1.Prob.CT.reset') –
此外,我很久没有使用Shiny,所以我不太确定,但我会尝试设置'Ch1.Prob.CT.obs 'data'无功元素中,* not *在观察者中。如果你想在观察者中更新它,你应该使用一个反应变量。 –