R 每次按下按钮都会生成随机值
我不熟悉shiny,并做了一个简单的Shining应用程序,它生成iid正态变量并打印直方图。 输入有:R 每次按下按钮都会生成随机值,r,shiny,R,Shiny,我不熟悉shiny,并做了一个简单的Shining应用程序,它生成iid正态变量并打印直方图。 输入有: 2个数字输入字段,mu和sigma 动作按钮 输出为选项卡集面板: 表1:5生成的值 表2:直方图 所以它不起作用。我尝试了很多变体,但唯一的解决方案是这个 下面是代码ui.R library(shiny) library(xtable) meanInput1 <- numericInput("id1", "$$mean \\ of \\ x_1$$", 1, min = -
- 2个数字输入字段,mu和sigma
- 动作按钮
- 表1:5生成的值
- 表2:直方图
library(shiny)
library(xtable)
meanInput1 <- numericInput("id1", "$$mean \\ of \\ x_1$$", 1, min = -10, max = 10, step = 1)
meanInput2 <- numericInput("id2", "$$sd \\ of \\ x_2$$", 1, min = -10, max = 10, step = 1)
tabPanel1 <- tabPanel("generated values", tableOutput("table1"))
tabPanel2 <- tabPanel("Plot", plotOutput("plot1"))
shinyUI(fluidPage(
withMathJax(),
titlePanel("title"),
sidebarLayout(
fluid=TRUE,
sidebarPanel(
meanInput1,
meanInput2,
actionButton("goButton", "Go!")
),
mainPanel(
tabsetPanel(
tabPanel1,
tabPanel2
)
)
)))
库(闪亮)
图书馆(xtable)
meansinput1在本例中,您希望使用eventReactive
。您可以找到使用操作按钮的演示。您的代码也有一些奇怪的结构,在render语句中包含render语句
如果您创建了eventReactive
函数,并将renderable
和renderPlot
调用分离出来,它会更加清晰,工作正常。最好不要将变量命名为与函数相同的名称,因此为了清晰起见,我将表
变量更改为my_表
shinyServer(
function(input, output) {
rand <- eventReactive(input$goButton,{
sigma <- input$id2
muInput <- input$id1
my_table <- as.data.frame(rnorm(n = 5,muInput,sd = sigma))
names(my_table) <- "x"
return(my_table)
})
output$plot1 <- renderPlot({
my_table <- rand()
if(is.null(my_table)){
return(NULL)
}else{
hist(head(my_table$x));
}
})
output$table1 <- renderTable({
my_table <- rand()
if(is.null(my_table)){
return(NULL)
}else{
my_table
}
});
}
)
shinyServer(
功能(输入、输出){
rand在这种情况下,您希望使用eventReactive
。您可以找到使用actionButton
的演示。您的代码的结构也有些奇怪,呈现语句中包含呈现语句
如果创建eventReactive
函数并将renderable
和renderPlot
分开调用,则调用会更加清晰且正确。最好不要将变量命名为函数,因此为了清晰起见,我将表
变量更改为我的表
shinyServer(
function(input, output) {
rand <- eventReactive(input$goButton,{
sigma <- input$id2
muInput <- input$id1
my_table <- as.data.frame(rnorm(n = 5,muInput,sd = sigma))
names(my_table) <- "x"
return(my_table)
})
output$plot1 <- renderPlot({
my_table <- rand()
if(is.null(my_table)){
return(NULL)
}else{
hist(head(my_table$x));
}
})
output$table1 <- renderTable({
my_table <- rand()
if(is.null(my_table)){
return(NULL)
}else{
my_table
}
});
}
)
shinyServer(
功能(输入、输出){
兰德