R_Language 板


LINE

[问题类型]: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) [软体熟悉度]: 使用者(已经有用R 做过不少作品) [问题叙述]: 我最近做了一只Shiny程式,但它需要的运算耗时比较久, (而且在shinyapps.io上花的时间比我在本地长很多...) 好奇有没有可能在UI里面加一行提示(例如「运算中,请稍候」之类的), 而且只在结果还没出来时才有那一行? 我知道也许长期目标是让我的程式码更有效率一点, 但目前我还想不到改写的方式。 orz [程式范例]: ui <- fluidPage( # Other UI elements conditionalPanel(condition = "output.done == 'FALSE'", helpText("运算中,请稍候")) ) server <- function(input, output) { output$done <- reactive({"FALSE"}) # Complicated processes output$done <- reactive({"TRUE"}) outputOptions(output, "done", suspendWhenHidden = FALSE) } [关键字]: shiny, dynamic UI --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.167.58.15
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1503326582.A.2EC.html
1F:→ celestialgod: 关键字 showModal shiny 08/22 00:28
2F:→ celestialgod: 或是勇shinyBS,不过个人不推 08/22 00:29
3F:→ celestialgod: shinyBS::bsModal 一年前用有一些问题,不确定现在 08/22 00:31
4F:→ celestialgod: 有没有改善,但是多数功能 shiny showModal就可以解 08/22 00:31
5F:→ celestialgod: 决 08/22 00:31
6F:→ clsmbstu: 感谢!再找时间来玩玩看~ 08/22 01:51
7F:推 cywhale: withProgress in shiny https://goo.gl/fA23za 08/22 09:15
8F:→ clsmbstu: 这个也好棒!大感谢! 08/22 10:37
※ 编辑: clsmbstu (140.112.25.106), 08/22/2017 11:13:43
9F:→ clsmbstu: 细读之後发现我的状况withProgress提供的帮助有限 08/22 15:35
10F:→ clsmbstu: 因为我最花时间的地方是leaflet::addPolygons而非回圈 08/22 15:35
11F:→ clsmbstu: 我试过把地图绘制的pipeline切开来并在中间放incProgess 08/22 15:37
12F:→ clsmbstu: 但诡异的是进度条跑满了,图还是要再等一阵子才会出来 08/22 15:38
13F:推 cywhale: 不是可以 withProgress(message=... { 08/23 01:05
14F:→ cywhale: ..(Your processes)..leaflet %<>% addPolygons() }) 08/23 01:06
我是参考你附的连结的写法, (本来想把每个server outputs都包在一个withProgress一起读进度,但逻辑好像不对) 以下是我的server function一部分的简化(省去根据UI的一些条件判断式): output$mapplot <- renderLeaflet({ # Define palettes pal <- colorNumeric("YlOrRd", merge_map()$Values) labs <- sprintf( "<strong>%s</strong><br>%g%%", merge_map()$CountyTown, merge_map()$Values ) %>% lapply(HTML) # Map plotting leaflet(merge_map()) %>% setView(121, 23.5, 7) %>% addTiles() %>% addPolygons(weight = 2, color = "white", dashArray = 3, fillColor = ~pal(Values), fillOpacity = 0.8, highlightOptions = highlightOptions( weight = 5, color = "#636363", bringToFront = TRUE ), label = labs, labelOptions = labelOptions( textsize = "15px", style = list("font-weight" = "normal") )) %>% addLegend(position = "bottomright", pal = pal, values = ~Values, opacity = 0.8, title = "Percentages", labFormat = labelFormat(suffix = "%")) }) 为了加进度条,变成: output$mapplot <- renderLeaflet({ withProgress( value = 0, message = "地图绘制中", detail = "制作说明标签" expr = { # Define palettes pal <- colorNumeric("YlOrRd", merge_map()$Values) labs <- sprintf( "<strong>%s</strong><br>%g%%", merge_map()$CountyTown, merge_map()$Values ) %>% lapply(HTML) incProgress(0.1, detail = "套叠地图图层") # Map plotting final_map <- leaflet(merge_map()) %>% setView(121, 23.5, 7) %>% addTiles() incProgress(0.2, detail = "绘制各区域资料") final_map <- addPolygons(final_map, weight = 2, color = "white", dashArray = 3, fillColor = ~pal(Values), fillOpacity = 0.8, highlightOptions = highlightOptions( weight = 5, color = "#636363", bringToFront = TRUE ), label = labs, labelOptions = labelOptions( textsize = "15px", style = list("font-weight" = "normal") )) incProgress(0.5, detail = "制作图例") final_map <- addLegend(final_map, position = "bottomright", pal = pal, values = ~Values, opacity = 0.8, title = "Percentages", labFormat = labelFormat(suffix = "%")) incProgress(0.2, detail = "即将完成") } ) final_map }) 先不提每次的进度前进多少其实是我的主观认定这件事, 要把原本的pipeline切开才能更新进度条也是有点麻烦。 最後更奇怪的是,进度条还是几乎瞬间跑完,但地图并没有马上出来... 我怀疑要把物件呈现上来本身也很花时间? 但是在这里的倒数第二行"final_map"似乎不能包进withProgress里面, 否则根本不会有地图出来。 这样提供的资讯够吗? ※ 编辑: clsmbstu (140.112.121.113), 08/23/2017 17:00:25
15F:推 cywhale: 跑比较多polygon在leaflet 最後这一步的确会慢一些.. 08/23 22:04
16F:→ cywhale: 不过如果用leafletProxy放不需要更新的部分,只更新新的 08/23 22:08
17F:→ cywhale: addpolygon部分 不知道对最後这一步显示速度有无帮助.. 08/23 22:09
18F:→ clsmbstu: 感谢!我也有查到leafletProxy,但我是主观猜测应该帮助 08/23 22:30
19F:→ clsmbstu: 不大,毕竟我每次更换输入就是要重画超过350个polygons 08/23 22:31
20F:→ clsmbstu: 而前面只是做到addTiles而已 QQ 08/23 22:32
21F:推 locka: 请问clsmbstu大大是在一个addPolygons()里超过350个多边形( 08/23 23:14
22F:→ locka: 例如全台乡镇)还是addPolygons()执行350次啊?? 08/23 23:14
23F:→ clsmbstu: 是前者喔 我就是在画全台乡镇 XD 08/23 23:40







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP