如何在 R shiny 应用程序中对多个输出变量的输入变量执行相同的计算?
How do I perform the same calculation on an input variable for many output variables in an R shiny app?
情况
我有一个带有一个滑块输入和两个文本输出的 shinyApp。该应用程序对静态文本字段中的输入和 returns 输出进行一些计算。这是我当前的代码:
library(shiny)
ui=fluidPage(
sliderInput("slider", "Slide Me", 0, 100,1),
textOutput("result01"),
textOutput("result02")
)
server=function(input,output){
output$result01=renderText({
MYVARIABLE=(input$slider)^12
MYVARIABLE+34543
})
output$result02=renderText({
MYVARIABLE=(input$slider)^12
MYVARIABLE+67544
})
}
shinyApp(ui, server)
问题
代码效率低下,因为它做了两次相同的计算:
MYVARIABLE=(input$slider)^12
目前还可以,因为计算不是很复杂,而且我只有两个输出。但是,将来我想同时对更多输出进行更复杂的计算。
希望
为了只做一次相同的计算而不是多次,我想在服务器端做这样的事情:
server=function(input,output){
MYVARIABLE=(input$slider)^12
output$result01=renderText({
MYVARIABLE+34543
})
output$result02=renderText({
MYVARIABLE+67544
})
}
但是,这给出了以下错误消息:
Error in .getReactiveEnvironment()$currentContext() :
Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)
问题
我需要将我的代码更改为什么才能使其正常工作? (提前致谢。)
我们可以把它放在里面 reactive
library(shiny)
options(scipen = 999)
ui <- fluidPage(
sliderInput("slider", "Slide Me", 0, 100,1),
textOutput("result01"),
textOutput("result02")
)
server <- function(input,output){
MYVARIABLE <- reactive({(input$slider)^12})
output$result01 <- renderText({
MYVARIABLE()+34543
})
output$result02 <- renderText({
MYVARIABLE()+67544
})
}
shinyApp(ui, server)
-输出
情况
我有一个带有一个滑块输入和两个文本输出的 shinyApp。该应用程序对静态文本字段中的输入和 returns 输出进行一些计算。这是我当前的代码:
library(shiny)
ui=fluidPage(
sliderInput("slider", "Slide Me", 0, 100,1),
textOutput("result01"),
textOutput("result02")
)
server=function(input,output){
output$result01=renderText({
MYVARIABLE=(input$slider)^12
MYVARIABLE+34543
})
output$result02=renderText({
MYVARIABLE=(input$slider)^12
MYVARIABLE+67544
})
}
shinyApp(ui, server)
问题
代码效率低下,因为它做了两次相同的计算:
MYVARIABLE=(input$slider)^12
目前还可以,因为计算不是很复杂,而且我只有两个输出。但是,将来我想同时对更多输出进行更复杂的计算。
希望
为了只做一次相同的计算而不是多次,我想在服务器端做这样的事情:
server=function(input,output){
MYVARIABLE=(input$slider)^12
output$result01=renderText({
MYVARIABLE+34543
})
output$result02=renderText({
MYVARIABLE+67544
})
}
但是,这给出了以下错误消息:
Error in .getReactiveEnvironment()$currentContext() :
Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)
问题
我需要将我的代码更改为什么才能使其正常工作? (提前致谢。)
我们可以把它放在里面 reactive
library(shiny)
options(scipen = 999)
ui <- fluidPage(
sliderInput("slider", "Slide Me", 0, 100,1),
textOutput("result01"),
textOutput("result02")
)
server <- function(input,output){
MYVARIABLE <- reactive({(input$slider)^12})
output$result01 <- renderText({
MYVARIABLE()+34543
})
output$result02 <- renderText({
MYVARIABLE()+67544
})
}
shinyApp(ui, server)
-输出