在交互式R会话中从闪亮的应用程序返回值
我正在使用shiny制作一个小的交互式小部件。小部件的目的不是创建一个独立的闪亮web应用程序。相反,我们的想法是在交互式R会话中运行小部件,以允许用户使用GUI交互操作会话中的数据。然后,函数应将Shining应用程序的输出返回给用户会话 “我的小部件”的“真正”用途是以交互方式选择绘图上的数据点,并返回选择作为函数输出的值。然而,为了制作一个漂亮而简单的REPREX,我选择了一个更简单的场景:在交互式R会话中从闪亮的应用程序返回值,r,shiny,R,Shiny,我正在使用shiny制作一个小的交互式小部件。小部件的目的不是创建一个独立的闪亮web应用程序。相反,我们的想法是在交互式R会话中运行小部件,以允许用户使用GUI交互操作会话中的数据。然后,函数应将Shining应用程序的输出返回给用户会话 “我的小部件”的“真正”用途是以交互方式选择绘图上的数据点,并返回选择作为函数输出的值。然而,为了制作一个漂亮而简单的REPREX,我选择了一个更简单的场景: multiply_me <- function(number1) { requi
multiply_me <-
function(number1) {
require(shiny)
shinyApp(
ui = fluidPage(
selectInput('number2', label = 'Enter multiplication factor', choices = c(1, 2, 3)),
textOutput('result')
),
server = function(input, output) {
output$result = renderText(number1 * as.numeric(input$number2))
}
)
}
在multiply_me函数中,用户可以从现有的交互式会话number1中获取一个变量,然后运行multiply_menumber1来启动这个小部件。然后,小部件允许用户在滑块上选择乘法因子并查看结果
但是如何将计算结果1*2返回到交互式R会话?您可以使用stopApp:
您可以使用stopApp:
您还可以在闪亮的小工具中使用stopApp:
library(shiny)
library(miniUI)
multiply_me <- function(number1) {
ui <- miniPage(
gadgetTitleBar("My Gadget"),
miniContentPanel(
selectInput(
'number2', label = 'Enter multiplication factor', choices = c(1, 2, 3)
),
textOutput('result')
)
)
server <- function(input, output, session) {
result <- reactive({
number1 * as.numeric(input$number2)
})
output$result <- renderText(result())
observeEvent(input$done, {
returnValue <- result()
stopApp(returnValue)
})
observeEvent(input$cancel, {
stopApp()
})
}
runGadget(ui, server)
}
该小工具在RStudio查看器中打开,它有两个按钮“完成”和“取消”,因此您无需执行这些按钮。您也可以在闪亮的小工具中使用stopApp:
library(shiny)
library(miniUI)
multiply_me <- function(number1) {
ui <- miniPage(
gadgetTitleBar("My Gadget"),
miniContentPanel(
selectInput(
'number2', label = 'Enter multiplication factor', choices = c(1, 2, 3)
),
textOutput('result')
)
)
server <- function(input, output, session) {
result <- reactive({
number1 * as.numeric(input$number2)
})
output$result <- renderText(result())
observeEvent(input$done, {
returnValue <- result()
stopApp(returnValue)
})
observeEvent(input$cancel, {
stopApp()
})
}
runGadget(ui, server)
}
该小工具将在RStudio查看器中打开,它有两个按钮“完成”和“取消”,因此您无需执行这些按钮。您可以使用@Stéphanelant将结果存储在全局环境中。尽管如果可能的话,我还是希望能够将值作为函数返回,以获得更大的安全性和灵活性。对于更复杂的现实世界应用程序,例如,我希望能够多次运行应用程序以生成不同的输出,以查看在小部件中选择不同数据点的效果。您可以使用@Stéphanelant将结果存储在全局环境中。尽管如果可能的话,我还是希望能够将值作为函数返回,以获得更大的安全性和灵活性。对于更复杂的现实世界应用程序,例如,我希望能够多次运行应用程序以生成不同的输出,以查看在小部件中选择不同数据点的效果。