R Shiny不随机化

时间:2015-08-21 06:34:01

标签: r random shiny

我正在尝试为我正在教授的课程编写一个Shiny应用程序,从数据集中抽取随机样本并计算摘要统计数据。每当我按下UI上的重置按钮时,都应该采样一个新的子集。到目前为止,这是我的代码:

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不随机化?我怎样才能让它再次随机化?

2 个答案:

答案 0 :(得分:0)

添加

等行
set.seed(as.integer(Sys.time()))
在您需要随机数之前

答案 1 :(得分:0)

这样的代码:

observeEvent(input$xxx, {
 x <- ...
})
f <- eventReactive(input$xxx, {
 [do something with x] 
})

不起作用。

你可以简单地删除观察者并执行:

f <- eventReactive(input$xxx, {
 x <- ...
 [do something with x] 
})

如果要在观察者中使用受修改的变量,则必须使用反应列表,如下所示:

values <- reactiveValues()
values$x <- [initial value of x]
observeEvent(input$xxx, {
 values$x <- ...
})

(此外,请勿在闪亮元素的名称中使用一些点(.)。)