将用户输入从shiny发送到源R脚本

问题描述 投票:0回答:2

我正在开发一个闪亮的应用程序,其中来自 UI 端的用户输入用作源 R 脚本中的变量。

这是所需的输出。选中该复选框后,它将显示在应用程序的表格中:

library(shiny)
library(DT)

ui <- fluidPage(
  checkboxInput("somevalue", "Check box", FALSE),
  dataTableOutput("table1")
)

server <- function(input, output) {
  output$table1 <- renderDataTable({
    data.frame("Is the check box checked?" = input$somevalue, check.names = F)
  })
}

shinyApp(ui, server)

但是,当 df 使用 UI 输入中的值从另一个 R 脚本获取时,应用程序会显示“错误,未找到对象 foo”。源脚本似乎无法读取闪亮环境中的变量。如何将变量从闪亮的发送到我的源脚本?

我希望下面的代码能够工作:

# sourced script saved at ~/path/to/file/test.R    
df = data.frame("Is the check box checked?" = foo, check.names = F)

应用程序:

library(shiny)
library(DT)

ui <- fluidPage(
  checkboxInput("somevalue", "Check box", FALSE),
  dataTableOutput("table1")
)
server <- function(input, output) {
  output$table1 <- renderDataTable({ 
    foo <- input$somevalue
    source("~/path/to/file/test.R")
    df
    })
}
shinyApp(ui, server)
r shiny dt
2个回答
2
投票

我通过 stackoverflow 的天才“类似问题”功能找到了这个问题的超级简单答案:在 Shiny 中,使用用户输入的新值更新 DataTable 。我想无论如何我都会分享这个问题,因为我用谷歌搜索了这个问题,但没有找到这个特定问题的解决方案。

答案:要将变量从闪亮的环境导出到全局环境(可由源脚本读取),请使用 <<- in variable assignment instead of <-

# sourced script saved at ~/path/to/file/test.R    
df = data.frame("Is the check box checked?" = foo, check.names = F)

功能应用程序:

library(shiny)
library(DT)

ui <- fluidPage(
  checkboxInput("somevalue", "Check box", FALSE),
  dataTableOutput("table1")
)
server <- function(input, output) {
  output$table1 <- renderDataTable({ 
    foo <<- input$somevalue
    source("~/path/to/file/test.R")
    df
    })
}
shinyApp(ui, server)

0
投票

尝试使用:

source("~/path/to/file/test.R", local = True)

发现类似的东西可能会提供更多想法。 讨论

© www.soinside.com 2019 - 2024. All rights reserved.