r - R Shiny 我如何在函数内更新ProgressBar?
问题描述
我是新来的,如有错误请见谅。
我有以下代码工作:
library(shinydashboard)
library(shinyWidgets)
#### Header ####
header <- dashboardHeader()
#### Sidebar ####
sidebar <- dashboardSidebar()
#### Body ####
body <- dashboardBody(
actionButton("go", label = "Go!"),
# Loading Bar
progressBar("progress", value=0, total=100, title="", display_pct = TRUE)
)
ui = dashboardPage(header, sidebar, body)
#### Server ####
server <- function(input, output, session){
observeEvent(input$go,{
for(i in 1:13){
updateProgressBar(
session = session,
id = "progress",
value = i,
total = 13,
title = paste("Progress ", i, "/", 13)
)
Sys.sleep(0.2)
}
}
)
}
shinyApp(ui, server)
但是现在我需要通过已经定义的函数中的一些代码来更新progressBar(实际上是在源代码中)。作为我定义的测试:
test_func <- function(){
for(i in 1:13){
updateProgressBar(
session = session,
id = "progress",
value = i,
total = 13,
title = paste("Progress ", i, "/", 13)
)
Sys.sleep(0.2)
}
}
并将服务器编辑为:
#### Server ####
server <- function(input, output, session){
observeEvent(input$go,{
test_func()
}
)
}
我收到以下错误:“对象类型闭包不是子集”
我怎样才能以正确的方式做到这一点?提前致谢。
解决方案
您的问题似乎与环境有关。
当我在服务器函数test_func
之外定义时,我得到一个错误(与你的不同) 。当我在服务器函数中定义它时,我得到了预期的行为。您可以在服务器功能中获取外部文件吗?
如果不是,session
则作为参数传递给test_func
. 当我这样做并test_func
在服务器功能之外定义时,一切都按预期工作。
推荐阅读
- angular - 角度登录和注册问题?
- android - 一加IMEI问题
- python - 使用 JSON 作为 SQL 查询构建器
- ssis - 枚举时如何防止重复加载源表?
- reactjs - 是否有任何条纹元素可以向用户显示保存的卡片。?
- python - 做更多的标题意味着服务器认为你是人的机会更大
- azure-devops - 我想使用 Azure Pipelines 将基于 .Net 的核心 Web 应用程序与我的测试套件集成,并且只是想知道可能性
- excel - 为什么我的 Excel 表格在我插入/删除行时会增加列?
- python - 如何将函数转换为 lambda
- angular - 是否可以在裁剪框中禁用图像调整大小选项?