看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R做某件事情,但是我不知道要怎麼用R寫出來) [軟體熟悉度]: 使用者(已經有用R做過不少作品) PS: 但是第一次接觸Shiny [問題敘述]: 我正在用R內建的airquality,練習做Shiny App。 我想達到的目標是,使用者可自行選擇: 1. 想看的月份(從五月到九月任一) 2. 關心的變數(溫度、輻射強度等任一) 我想說做精美一點,月份不要用阿拉伯數字讓使用者選, 而是真的可以從"May"、"June"、"July"...之中選一個, 我再依據使用者的選擇subset data frame, 但會出現錯誤訊息: Error in ==: comparison (1) is possible only for atomic and list types 如果我直接讓使用者從阿拉伯數字擇一就沒有問題。 [程式範例]: https://gist.github.com/anonymous/62410421333fd6fbca794ba64c6dbd65 裡面包含: server.R(我認為問題可能出在第6行) ui.R(請留意第12行的設計) [環境敘述]: R version 3.3.2 (2016-10-31) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 7 x64 (build 7601) Service Pack 1 locale: [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 [2] LC_CTYPE=Chinese (Traditional)_Taiwan.950 [3] LC_MONETARY=Chinese (Traditional)_Taiwan.950 [4] LC_NUMERIC=C [5] LC_TIME=Chinese (Traditional)_Taiwan.950 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] ggplot2_2.2.1 shiny_1.0.0 loaded via a namespace (and not attached): [1] Rcpp_0.12.9 assertthat_0.1 digest_0.6.12 mime_0.5 [5] grid_3.3.2 R6_2.2.0 plyr_1.8.4 xtable_1.8-2 [9] jsonlite_1.2 gtable_0.2.0 scales_0.4.1 lazyeval_0.2.0 [13] labeling_0.3 tools_3.3.2 munsell_0.4.3 httpuv_1.3.3 [17] colorspace_1.3-2 htmltools_0.3.5 sourcetools_0.1.5 tibble_1.2 [關鍵字]: Shiny, which, comparison -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.143.128 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1487413342.A.7DD.html
clsmbstu: 我靈機一動,把airquality的月份改成英文,順利解決! 02/18 21:19
clsmbstu: 但還是不懂為什麼input無法用which來比對... 02/18 21:19
clansoda: 因為你的資料本來就沒有英文月份 他抓不到 02/18 21:37
clansoda: switch function might work 02/18 21:43
cywhale: match(input$month,month.name[5:9])+4L 02/18 21:53
cywhale: data = subset(airquality, Month == month_selected()) 02/18 21:53
clsmbstu: clansoda,但是我比對的對象並不是我的資料啊? @@" 02/18 22:10
clsmbstu: cywhale,我沒想到match,感謝你! 02/18 22:12
clsmbstu: 如此應該match(input$month, month.name)也可以 晚點試 02/18 22:13
clsmbstu: 好奇input$month究竟是什麼資料結構,==會不能用? 02/18 22:14
cywhale: 是的,只要傳回正確的index即可,資料是數字,input是 02/18 22:15
cywhale: 月份當然不行..另外 Month==那一行subsetting也有bug如上 02/18 22:16
cywhale: input$month就是傳回你自己寫的choices.. 02/18 22:17
cywhale: 下次你若不確定到底傳回來什麼,就print(input$..) debug 02/18 22:18
clsmbstu: 對!我也發現了Month == 那一行有問題! 02/18 22:25
clsmbstu: 我寫Month == month_selected,少了小括號 02/18 22:26
clsmbstu: 很可能問題是出在這邊 而非which函數 02/18 22:27
clsmbstu: 第一次寫Shiny真的不太熟,感謝大家! :D 02/18 22:27
※ 編輯: clsmbstu (114.42.143.128), 02/18/2017 23:33:10