R 如何将这些shinyApp参数设置为;反应性;输入更改
我正在构建一个简单的shinyApp,它在给定两个分位数(lbv和ubv)的情况下绘制一个正态分布,对应于5%和95%的概率(90%的置信区间)。分位数是用户定义的输入R 如何将这些shinyApp参数设置为;反应性;输入更改,r,reactive-programming,shiny,R,Reactive Programming,Shiny,我正在构建一个简单的shinyApp,它在给定两个分位数(lbv和ubv)的情况下绘制一个正态分布,对应于5%和95%的概率(90%的置信区间)。分位数是用户定义的输入 # Set libraries library(shiny) library(rriskDistributions) # Global variables can go here lb <- 0.05 ub <- 0.95 lbv <- 200 ubv <- 1000 dpar <- get.no
# Set libraries
library(shiny)
library(rriskDistributions)
# Global variables can go here
lb <- 0.05
ub <- 0.95
lbv <- 200
ubv <- 1000
dpar <- get.norm.par(p=c(lb,ub),q=c(lbv,ubv),plot=F)
mean <- dpar[1]
sd <- dpar[2]
x1 <- lbv - (ubv-lbv)/2 # set my x-axis left bound
x2 <- ubv + (ubv-lbv)/2 # set my x-axis right bound
xseq<-seq(x1,x2,.1)
densities<-dnorm(xseq, mean,sd)
ui <- fluidPage(
titlePanel("Parameters"),
sidebarLayout(
sidebarPanel(
numericInput('lbv', 'Lower Bound Value', lbv),
numericInput('ubv', 'Upper Bound Value', ubv)
),
mainPanel(
plotOutput('plot')
)
)
)
server <- function(input, output) {
output$plot <- renderPlot({
plot(xseq, densities, col="darkgreen", xlab="", ylab="Density", type="l",lwd=2, cex=2, main="Normal Density", cex.axis=.8)
})
}
shinyApp(ui = ui, server = server)
为了获得正常PDF的平均值和sd,我使用了rriskDistributions包中的get.norm.par(),如下所示:
dpar <- get.norm.par(p=c(0.05,0.95),q=c(lbv,ubv),plot=F)
mean <- dpar[1]
sd <- dpar[2]
及
dataInput我们需要使依赖于input$
的对象成为被动对象,如下所示:
# Set libraries
library(shiny)
library(rriskDistributions)
# Global variables can go here
lb <- 0.05
ub <- 0.95
ui <- fluidPage(
titlePanel("Parameters"),
sidebarLayout(
sidebarPanel(
numericInput('lbv', 'Lower Bound Value', 200),
numericInput('ubv', 'Upper Bound Value', 1000)
),
mainPanel(
plotOutput('plot')
)
)
)
server <- function(input, output) {
xseq <- reactive({
x1 <- input$lbv - (input$ubv - input$lbv)/2 # set my x-axis left bound
x2 <- input$ubv + (input$ubv - input$lbv)/2 # set my x-axis right bound
# return
seq(x1, x2, 0.1)
})
densities <- reactive({
dpar <- get.norm.par(p = c(lb, ub), q = c(input$lbv, input$ubv), plot = FALSE)
mean <- dpar[1]
sd <- dpar[2]
# return
dnorm(xseq(), mean, sd)
})
output$plot <- renderPlot({
plot(xseq(), densities(),
col = "darkgreen", xlab="", ylab="Density", type="l",lwd=2, cex=2,
main="Normal Density", cex.axis=.8)
})
}
shinyApp(ui = ui, server = server)
#设置库
图书馆(闪亮)
图书馆(发行版)
#全局变量可以放在这里
lb在ui.R中定义的所有全局变量,将它们移动到server.R并使它们成为被动变量。本质上,xseq
和密度
必须是一个反应对象。@zx8754:只有一个文件app.R。我只是在reactive({})中定义有问题的变量吗?我会试试……我的意思是在服务器位内部。@zx8754:不仅仅是将它们移动到服务器位内部。我做到了,但仍然没有什么不同。我如何继续调用这些变量?有什么特殊语法吗?
dataInput <- reactive({
get.norm.par(p=c(lb,ub),q=c(input$lbv,input$ubv),plot=F)
mean <- get.norm.par(p=c(lb,ub),q=c(input$lbv,input$ubv),plot=F)[1]
sd <- get.norm.par(p=c(lb,ub),q=c(input$lbv,input$ubv),plot=F)[2]
x1 <- input$lbv - (input$ubv-input$lbv)/2 # set my x-axis left bound
x2 <- input$ubv + (input$ubv-input$lbv)/2 # set my x-axis right bound
xseq<-seq(x1,x2,.1)
densities<-dnorm(xseq, mean,sd)
})
# Set libraries
library(shiny)
library(rriskDistributions)
# Global variables can go here
lb <- 0.05
ub <- 0.95
ui <- fluidPage(
titlePanel("Parameters"),
sidebarLayout(
sidebarPanel(
numericInput('lbv', 'Lower Bound Value', 200),
numericInput('ubv', 'Upper Bound Value', 1000)
),
mainPanel(
plotOutput('plot')
)
)
)
server <- function(input, output) {
xseq <- reactive({
x1 <- input$lbv - (input$ubv - input$lbv)/2 # set my x-axis left bound
x2 <- input$ubv + (input$ubv - input$lbv)/2 # set my x-axis right bound
# return
seq(x1, x2, 0.1)
})
densities <- reactive({
dpar <- get.norm.par(p = c(lb, ub), q = c(input$lbv, input$ubv), plot = FALSE)
mean <- dpar[1]
sd <- dpar[2]
# return
dnorm(xseq(), mean, sd)
})
output$plot <- renderPlot({
plot(xseq(), densities(),
col = "darkgreen", xlab="", ylab="Density", type="l",lwd=2, cex=2,
main="Normal Density", cex.axis=.8)
})
}
shinyApp(ui = ui, server = server)