在 shiny app 之外调用 reactive function()
Call reactive function() outside the shiny app
我创建了以下 reprex,它试图在闪亮的应用程序之外使用反应函数 price()。如果我使用 df<-5 则代码有效,但是当我使用 df<- price() 时代码无效。我有一个巨大的闪亮应用程序,我想在闪亮的应用程序之外 source() 一个巨大的脚本,但它需要一些来自反应函数的输入值。
library(shiny)
df<-price()
ui <- fluidPage(
numericInput("price", "Price", value=1, min=1 , max=10)
,textOutput("text")
)
server <- function(input, output, session) {
price <- reactive({as.numeric(input$price)})
output$text<- renderText(df)
}
shinyApp(ui, server)
我不想在应用程序内部调用脚本,因为我将不得不在每种输出中一次又一次地调用它,并且该脚本是一个模拟,这意味着它会在每次调用时更改值。我只想调用它一次,以便值保持不变,我可以输出它们。
正在尝试使用 gdevaux 的建议。当我尝试在变量中输入函数的值时,它似乎不起作用。它说'myfunction(argument1)中的错误:找不到对象'argument1'
'.
library(shiny)
# in script.R
myfunction <- function(argument1){
return(as.numeric(argument1))
}
f<-myfunction(argument1) #Trying to put output values in a variable
# in app.R
#source("script.R")
ui <- fluidPage(
numericInput("price", "Price", value=1, min=1 , max=10)
,textOutput("text")
)
server <- function(input, output, session) {
price <- reactive(myfunction(argument1 = input$price))
output$text<- renderText(price())
}
shinyApp(ui, server)
您不能在服务器(或 ui)中定义一个函数然后在外部使用它,也不能在闪亮的应用程序外部调用输入值。您可以做的是在服务器外部(例如在另一个文件中)编写您的函数,获取它,并将您的输入或反应作为参数传递给这些函数
library(shiny)
# in script.R
myfunction <- function(argument1){
return(as.numeric(argument1))
}
# in app.R
#source("script.R")
ui <- fluidPage(
numericInput("price", "Price", value=1, min=1 , max=10)
,textOutput("text")
)
server <- function(input, output, session) {
price <- reactive(myfunction(argument1 = input$price))
output$text<- renderText(price())
}
shinyApp(ui, server)
我创建了以下 reprex,它试图在闪亮的应用程序之外使用反应函数 price()。如果我使用 df<-5 则代码有效,但是当我使用 df<- price() 时代码无效。我有一个巨大的闪亮应用程序,我想在闪亮的应用程序之外 source() 一个巨大的脚本,但它需要一些来自反应函数的输入值。
library(shiny)
df<-price()
ui <- fluidPage(
numericInput("price", "Price", value=1, min=1 , max=10)
,textOutput("text")
)
server <- function(input, output, session) {
price <- reactive({as.numeric(input$price)})
output$text<- renderText(df)
}
shinyApp(ui, server)
我不想在应用程序内部调用脚本,因为我将不得不在每种输出中一次又一次地调用它,并且该脚本是一个模拟,这意味着它会在每次调用时更改值。我只想调用它一次,以便值保持不变,我可以输出它们。
正在尝试使用 gdevaux 的建议。当我尝试在变量中输入函数的值时,它似乎不起作用。它说'myfunction(argument1)中的错误:找不到对象'argument1' '.
library(shiny)
# in script.R
myfunction <- function(argument1){
return(as.numeric(argument1))
}
f<-myfunction(argument1) #Trying to put output values in a variable
# in app.R
#source("script.R")
ui <- fluidPage(
numericInput("price", "Price", value=1, min=1 , max=10)
,textOutput("text")
)
server <- function(input, output, session) {
price <- reactive(myfunction(argument1 = input$price))
output$text<- renderText(price())
}
shinyApp(ui, server)
您不能在服务器(或 ui)中定义一个函数然后在外部使用它,也不能在闪亮的应用程序外部调用输入值。您可以做的是在服务器外部(例如在另一个文件中)编写您的函数,获取它,并将您的输入或反应作为参数传递给这些函数
library(shiny)
# in script.R
myfunction <- function(argument1){
return(as.numeric(argument1))
}
# in app.R
#source("script.R")
ui <- fluidPage(
numericInput("price", "Price", value=1, min=1 , max=10)
,textOutput("text")
)
server <- function(input, output, session) {
price <- reactive(myfunction(argument1 = input$price))
output$text<- renderText(price())
}
shinyApp(ui, server)