我正在开发一个闪亮的应用程序,其中来自 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)
我通过 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)