找了半天终于找到了shiny中显示进度条的方法,直接上demo,记录下。
UI脚本
### UI
library(shiny)
ui = fluidPage(
sidebarPanel(
#侧边栏的控制键
width = 3,#设置侧边栏的宽度
#时间控件
dateRangeInput(
inputId = "date",
label = h2(strong(span("日 期", style = "color:blue"))),
start = Sys.Date() - 7,
#开始日期设置
end = Sys.Date() - 1,
language = "zh-CN",
width = "90%",
separator = "至"
),
actionButton(inputId = "update", label = "提 交",icon=icon('play-circle'))
),
mainPanel(DT::dataTableOutput(outputId = 'tbl'))
)
Server脚本
if (!require("DT")){install.packages('DT')}
library(shiny)
library(DT)
## 对脚本里所有datatable()部分一起设置。
## 将表格中的描述文字改成中文
options(DT.options = list(
searchHighlight = TRUE,
language = list(
info = '显示第_START_ 至 _END_ 项结果,共 _TOTAL_ 项',
search = '搜索:',
paginate = list(previous = '上页', `next` = '下页'),
lengthMenu = '显示 _MENU_ 项结果'
),
columnDefs = list(
list(className = 'dt-center',targets = "_all"))# 设置表格中列居中排列 ,参数targets的值可以选定指定列,也可以全部显示
))
shinyServer(function(input, output, session) {
## 点击actionButton按钮才会更新数据,以及加载进度条
datasetInput <- eventReactive(
eventExpr = input$update,
valueExpr = {
# 加上进度条显示
progress <-
Progress$new(session,
min = 1,
max = 10
# ,style = "old"
)
on.exit(progress$close())
progress$set(message = '程序执行中')
for (i in 1:5) {
progress$set(value = i)
Sys.sleep(0.5)
}
data <- iris
for (i in 6:10) {
progress$set(value = i)
Sys.sleep(0.5)
}
data
},
ignoreNULL = T
)
output$tbl = DT::renderDataTable(
## 修改某一列为百分比格式
expr={datatable(datasetInput())%>%formatPercentage(4, 2)} ,
filter = 'top',
# 筛选框的位置
server = TRUE,
# 不显示行名
rownames = FALSE,
# 添加表格标题
caption = "表格的案例",
options = list(autoWidth = TRUE )
)
}
)
最终页面
REF
[1]https://datatables.net/reference/option/
[2]http://www.jianshu.com/p/90e290e80cd0
后记
参数太多了,我只是关注功能简单的实现,所以,就一知半解吧。参考文档参数设置实在想太多鸟,且都是英文,感兴趣&有时间可以多关注吧~