寫R程式卡住、不知道R語言的套件怎麼用,R語言討論區、問答網站、社團幫你整理
只要是寫程式,就有可能會卡住,有時候忘記該用哪一個套件、哪一個函數,有時候是遇到抽象問題,不確定該如何轉換成程式邏輯。R語言自然也是如此,例如 ggplot2,有那麼多層的繪圖文法,有時候不小心漏掉部分便滿盤皆輸,還有 stringr,都用 str_() 開頭,真的很容易忘記該用哪個函數。
我整理了 8 個遇上R語言的程式問題時,你可以提問的地方,這些網站橫跨中文與英文,有專攻R語言的版面,也有更廣泛的程式社群;有來者不忌作業考試通包的熱心版友,也有討論品質上乘專業絕倫的討論區,就看你需要哪一個。底下我會按照性質區分,並逐一介紹這些R語言相關的討論版,都是好地方!
R語言專版
台灣R軟體Club
台灣R語言Club是台灣目前以R語言為主題最大的臉書社團,平常主要的文章以提問為主,有上班族問工作時遇到的R語言問題,也有學生拿自己的作業來問,說起來有好也有壞,這邊的版友對於各類問題來者不拒,沒有打出程式碼、只有截圖,或者連截圖都沒有,僅以文字說明,大家都還是會熱心回答。
除了問答以外,版上也會有R語言書籍的交易貼文,以及徵求R語言家教和徵求R語言作業的代筆者。另外,時不時有人分享R語言的新知,運氣好的話,還會有功力深厚的版友貼上跟當下套件發展相關、平常使用的程式碼,例如先前中研院釋出與 python 對接的 CKIP 模型時,就有版友分享該如何以R語言呼叫這個模型,藉此更好地執行繁體中文斷詞相關任務。
PTT R語言版
PTT R_Language 版是另一個尋求答案的地方。這裡發問的門檻略高一些,至少要明確舉出自己遇到的問題,並寫出自己對R的熟悉程度,還有自己遇上問題的R環境(session info)。不過,只要遵守模板的要點,版友幾乎是有問必答。
R語言版上有常駐幾位專家,從最小的函數問題到進階的資料處理思維,再一直到效能、平行運算等等,他們總是不吝於分享經驗。雖然PTT的留言會依照句子長度斷詞,程式碼呈現上不易閱讀,但大家就會利用線上的程式碼暫存平台回答,總之,是一個版友很願意彼此回覆的好地方。
綜合版
大數俱樂部
這個臉書社團由師大全球經營與策略研究所教授何宗武創立與經營。何老師主攻財金與經濟領域,精通R跟Python,著作等身之外,更時常更新維護他開發的R語言套件。值得一提的是,先前何老師主動爭取翻譯R主程式,替台灣奠定了繁體中文版本用詞的基礎。
社團中何老師時常分享R語言相關的內容,最近的主題都以視覺化和實際案例為主,有時也會有其他版友提問;偶爾也會有Python相關的討論。算是台灣R語言Club以外,另一個重要的、會討論R語言的資料科學綜合姓社團。
iT邦幫忙
對學程式的人來說,iT邦幫忙最有名的應該就是它的「iThome 鐵人賽」,每年號召版友一起加入連續三十天不間斷的技術文章撰寫旅程,因為關注的人多、流量不錯,得獎者又有機會出書,因此總能吸引數百甚至近千人參加。iT邦幫忙除了程式寫作以外,也有提問的版面,可以在上面詢問R語言的相關問題。
Dcard數學版
Dcard 上沒有R語言的專版,大家主要都在數學版上發問,也可以追蹤相關標籤。不過相對於上面的其他提問空間,這邊的R語言討論量體較小,可以先考慮去其他版問問題。
Stack Overflow
Stack Overflow 可能是程式託管平台 Github 以外,最多程式設計師出沒的網站了。它本身的宗旨就是程式相關專業的問答網站,針對提問者的困惑,回答者會提出多種解決方案,因此可以看到不同人的思考方式、解題方法,很值得一觀。
不過,這邊的提問門檻相對也高,必須提出「最小、可重複性舉例」(Minimal, Reproducible Example),版友才會願意回答。舉個例子,你可能在用 dplyr 套件時,想要利用 filter() 函數,依照一定條件篩選出你要的列。然而,實際跑程式的時候你發現居然不符你的預期。
如果你在版上說「我想用 filter() 篩選出 2022 年 10 月以後的資料但失敗了。」這樣的說法看似明確,但失敗的表象背後可能有諸多原因,可能是你的大於小於符號寫錯了,可能是你的日期欄位不是 date format,也有可能你的資料本身遇到編碼問題,讀取進來其實那個欄位根本沒有東西等等。因為版友無法通靈出問題的根源,才會要求大家舉出「最小、可重複性舉例」。
不過,這裡的版友可以說是這篇文章介紹的所有地方當中,最專業的一群,跟底下會提到的 Github 套件開發者不相上下,所以討論品質很高。若你的英文能力不錯,又想要腦力激盪,則不妨參考這兒。
統計之都
統計之都(Capital of Statistics)是對岸的統計學社群,網站裡面有一個熱絡的統計論壇。統計之都的創辦人是大神級人物謝益輝 ,他堪稱多工界的王者、開發界的霸主,對R語言的發展貢獻無數,不僅是 knitr, blogdown, bookdown, DT 等套件的作者,同時參與開發 rmarkdown, shiny, leaflet 且作為其主要貢獻者。
將重點拉回統計之都的論壇,這裡兼顧理論和應用知識,要問統計學公式的推導、定理背後的假設,或者是R程式,都是沒有問題的,這裡的人很有耐心。
其他
Github 上套件的 Issues 分頁
最後一個地方比較特別,是 Github 上特定套件的頁面。Github 是程式語言開發者存放、託管程式碼的地方,程式設計師可以在上面觀摩,學習他人如何寫出優雅簡潔的程式碼。此外,Github 也有多人共同協作(collaborate)的功能,小組成員可以集體開發同一項專案。
不僅如此,因為開源文化盛行,很多程式開發者會開放自己開發套件的程式碼,R語言的套件有上傳至 CRAN 的皆是如此。因此,使用者在欣賞之餘,也能發揮 1+1 > 2 的精神,例如看到 bug 直接撰寫補釘修正,或者是協助開發新的功能(feature)。
若你遇到問題百思不得其解,而且 Stack Overflow 上沒人回或者是沒人知道答案,你可以考慮去你遇到問題的套件的 Github,在 issues 分頁中,使用者會留言反映 bug、希望開發功能、建議等等,你可以在那邊提問。
不過,因為套件開發者非常忙碌,身上可能背負好幾個套件要修整、Github上累積數百則通知,所以他們未必有時間回應,有時候會有熱心人士上來幫忙;此外,你的問題若不是 bug 而只是使用上的 problem,可能會被趕回 Stack Overflow,還請多加注意。
隱藏推薦:愛上R語言
如果你逛過這些地方或者發問過,覺得不夠、還想找人交流,那我想向你自我推薦,我是一個R語言愛好者,幾年前進入R的世界後便無法自拔。若你有R語言的相關問題,歡迎在此留言。
若你對R語言的電子書感興趣,可以看這篇我先前寫的文章。以後我會寫更多R語言相關的學習內容,敬請期待!
本文由「愛上R語言」發布,非經允許請勿轉貼。
可以去台灣R軟體Club、PTT R語言版、大數俱樂部、iT邦幫忙、Dcard數學版、Stack Overflow、統計之都發問。