【问题标题】:Get R object in Shiny在 Shiny 中获取 R 对象
【发布时间】:2020-12-23 14:18:08
【问题描述】:

有没有可能得到一些在 Shiny 中使用的 R 对象?

例如,在下面的代码中,我想获取用户输入的文本字符串。 但是,.Last.value 不是所需的文本字符串。

参考

How to store the returned value from a Shiny module in reactiveValues?

Ex 代码

returnUI = function(id) {
  ns <- NS(id)
  
  tagList(
    textInput(ns("txt"), "Write something")
  )
}

returnServer = function(input, output, session) {
  myreturn <- reactiveValues()
  
  observe({ myreturn$txt <- input$txt })
  
  return(myreturn)
}


library(shiny)
source("modules/module_1.R")

ui <- fluidPage(
  
  returnUI("returntxt"),
  textOutput("mytxt")
  
)

server <- function(input, output, session) {
  
  myvals <- reactiveValues(
    txt = NULL
  )
  
  mytxt <- callModule(returnServer, "returntxt")
  
  observe({ 
    myvals$txt <- mytxt$txt 
    print(myvals$txt)
  })
  
  output$mytxt <- renderText({ myvals$txt })
  
}

shinyApp(ui, server) 

.Last.value

【问题讨论】:

  • 如果你想要闪亮的应用程序完成后的值,你需要像https://stackoverflow.com/questions/27365575/how-to-exit-a-shiny-app-and-return-a-value 这样的东西。 .Last.value 变量仅适用于在控制台中运行的值。
  • 谢谢。我会试试你的建议页面,这个问题可能会重复。它应该被关闭......否则我将删除这个问题。
  • @CamfordOxbridge,我不认为这是一个重复的问题,并且可以将 R 对象从 Shiny 应用程序传回您的正常工作区以检查它们(请参阅我的答案)。跨度>

标签: r shiny


【解决方案1】:

是的,您可以从运行在控制台中的 Shiny 应用将变量推送到全局环境(您常用的工作区):

library(shiny)

ui <- fluidPage(

    # Sidebar with a slider input for number of bins 
    sidebarLayout(
        sidebarPanel(
            sliderInput("bins",
                        "Number of bins:",
                        min = 1,
                        max = 50,
                        value = 30)
        ),
        mainPanel(NULL)
    )
)

server <- function(input, output) {

    observe({
        my_global_env <- globalenv()
        my_global_env$x <- input$bins
    })
}

shinyApp(ui = ui, server = server)

【讨论】:

  • 太棒了!运行闪亮的代码后,有一个对象x
猜你喜欢
  • 2021-01-15
  • 2020-07-05
  • 2019-04-05
  • 1970-01-01
  • 2021-12-20
  • 2021-10-26
  • 2020-10-14
  • 2019-01-15
  • 2018-09-14
相关资源
最近更新 更多