初學者如何避免bug:RStudio代碼實時錯誤提示功能
作者:師爺,R語言中文社區作者,
知乎專欄:
https://zhuanlan.zhihu.com/rstudio
Code Diagnostics
Rstudio對靜態或者動態的代碼有分析的能力,具體的說在編程的過程中,會做一些必要錯誤提示。
通俗的講就是當你寫代碼的時候,系統會自動提示錯誤,並且進行糾正,極大的幫助初學者避免一些不必要的小bug,簡直不要太提心。
啟動診斷
啟動路徑:tools -> Global Options -> Code -> Diagnostics 編輯框:
圖中選項的簡介:
Show Diagnostics for R
是否在R代碼中執行展現行為
Enable diagnostics within R function calls
是否在函數調用的過程中展現診斷結果
例如. dplyr::select(mtcars, mpg, cyl). 如果你在大量使用非標準編寫代碼情況下,切換到此狀態,而且為此導致RStudio不能生成正確的代碼診斷。
調用R語言函數的參數
只在函數中填入部分參數,幫你判斷是否能夠執行代碼。診斷引擎會反饋缺失參數,不匹配參數,部分匹配參數,過多參數等錯誤。
例如,在下面的RStudio檢測到函數add_numbers缺少參數y. 註:無論add_numbers是否在當下的編程環境下。
類似的, missing arguments報告如下 (缺少逗號):
變數沒有定義是否報警
如果當前的變數沒有定義就會提示,診斷引擎會做簡單的語法提示,具有局限性。
(圖中的對象具有局域性)
變數有定義但是沒有使用進行提示
此診斷是針對辨認變數已經被創建,但是沒有使用的情況。常常用於試圖清除舊的代碼,或者其他小的錯誤(你認為需要用,但是後來卻沒有用到)
例如:變數「result」 已經被定義,但是沒有使用或者返回值。
R語言特有的診斷 (例如:空格)
這種診斷規則來自於Hadley Wickham』s style guide 的代碼規則, 並且做出警告,尤其是,診斷引擎試圖會對空格的錯誤用法進行提示。
目前不支持用戶改寫內在診斷邏輯。
對其他語言診斷其他診斷
RStudio也可對其他語言進行診斷 包括 C / C++, JavaScript, Python.
The C / C++ 語言的診斷報告編譯器錯誤並做出資源文本警告。
查看診斷結果
當有診斷結果產生,會在一下兩處進行提示:
在代碼左側「!」標誌對應錯誤行
對應錯誤的下劃線. 如下圖
展現診斷
這個特性控制診斷結果的展現和更新, 診斷可以保存之後呈現或者鍵盤輸入代碼若干時間後顯示。
項目級別診斷
你可以啟動診斷引擎作用在項目文件中的所有R文件上,或者用嚮導菜單,快捷鍵 CMD + ALT + SHIFT + P (CTRL 在Windows):
對項目進行診斷之後,控制台出現診斷結果的Markers框,內容包括所有的錯誤和警告
魔法注釋
RStudio診斷引擎加入魔法注釋來控制每個文件的基礎信息
常用的魔法注釋:
# !diagnostics off -- 不對這個文檔進行診斷
# !diagnostics style=[true/false] -- 對這個文檔切換診斷.
# !diagnostics level=[syntax/core/all] --切換, 嚴重性,
此外,可以對特殊的變數進行特殊的處理:
# !diagnostics suppress=
例如, global_variable沒進行提示, 而other_global_variable卻又如下提示:
Bug 報告
回復RR語言快速入門免費視頻
回復統計統計方法及其在R中的實現
回復用戶畫像民生銀行客戶畫像搭建與應用
回復大數據大數據系列免費視頻教程
回復可視化利用R語言做數據可視化
回複數據挖掘數據挖掘演算法原理解釋與應用
回復機器學習R&Python機器學習入門
TAG:R語言中文社區 |