跳到主要內容

Installing and Setting R environment variable in Windows

R 是一個 open source 的統計軟體,可以安裝在各種不同平台中,在 Windows 系統安裝過程相當簡單,只要下載 for Windows 版本,然後 " 下一步  >> 下一步" 就可以完成,寫這篇文章主要是要說明如何設定環境變數,讓自己可以管理自己所寫的程式碼、文件及引用常用的 library,未來系統更新時,這些重要的資料才不會因為更新版本而遺失,或者需要重新再次安裝 library。

R for Windows 的安裝程式內含 Windows x86 or x64 版本,預設是兩種版本全部安裝,安裝過程中可以使用 custom 來選擇安裝適合自己 Windows 的版本。另外, Message Translate 是翻譯的文件,是中文版的使用者翻譯文件介面,依照個人的喜好,選擇是否安裝;若安裝這個語言的套件後,也可以在 RGui Console 中: Edit >> GUI Preferences >> Language for menus and messages >>  輸入 en 做設定,必須注意:設定完 GUI Preferences 內的設定值需要將 Rconsole 檔案儲存在 HOME 的目錄,預設是 C:\Users\username\Documents 目錄,要更改 HOME 目錄,請繼續讀下面的文章。

安裝完成後開啟 Rgui.exe,在 Rgui 的 console 輸入:

>??startup

其中有一段文章:

R searches for site and user files to process for setting environment variables. The name of the site file is the one pointed to by the environment variable R_ENVIRON; if this is unset, ‘R_HOME/etc/Renviron.site’ is used (if it exists, which it does not in a ‘factory-fresh’ installation). The name of the user file can be specified by the R_ENVIRON_USER environment variable; if this is unset, the files searched for are ‘.Renviron’ in the current or in the user's home directory (in that order)

上面的文章是說明 R 環境變數的尋找順序,:  
R_ENVIRON > R_HOME/etc/Renviron.site > R_ENVIRON_USER

可以在 Rgui console 中輸入下列的指令來查看預設的環境變數:
> Sys.getenv("R_ENVIRON")
[1] ""

 > Sys.getenv("R_ENVIRON_USER")
[1] ""

> Sys.getenv("R_HOME")
[1] "C:/PROGRA~1/R/R-32~1.4"

> Sys.getenv("R_USER")
[1] "C:\\Users\\ASUS F6S\\Documents"

> Sys.getenv("HOME")
[1] "C:\\Users\\ASUS F6S\\Documents"


在 R help 中有一份 R for Windows FAQ 的文件,其中
 2.14 What are HOME and working directories? 有一段話:

The home directory is set as follows: 

If environment variable R_USER is set, its value is used. Otherwise if environment variable HOME is set, its value is used. After those two user-controllable settings, R tries to find system-defined home directories. It first tries to use the Windows "personal" directory (typically C:\Users\username\Documents).

知道以上的這些預設的環境變數值及 Windows 的 HOME 目錄的設定順序,就可以提供我們可以規劃將 R 安裝程式與自己開發的程式碼、 library分開儲存,未來版本升級時,才不會覆蓋掉以前自己開發的程式碼、library 與設定值。我將以自己的規劃為例,來說明如何設定 R 環境變數,如果這些規劃不適合你的開發環境,請自行做調整。

安裝完成後,使用 Sys.getenv() 取得環境變數值,由上面的預設值可以知道 R_ENVIRON,
 R_ENVIRON_USER 都尚未設定,這是正常的結果;此外,R_HOME/etc/ 目錄也沒有
Renviron.site 這個設定檔,所以完全可以自由的依照個人喜好來設定。那麼,我規劃將 R_HOME 還是維持原來的預設目錄,當版本更新時,可以直接 uninstall 後再安裝新的版本;但是,我希望將 HOME 的目錄改成 D:/elvis/home/R/etc 目錄,這樣的做法是希望開啟 Rgui Console 時,不要讀取在 R_HOME 中的 Rconsole 預設值,而是讀取 HOME 目錄中的 Rconsole 設定值;WorkSpace 及 Library目錄分別要設成 D:/R/workspace, D:/R/lib 目錄,讓 .RData, .Rhistory 檔案儲存在 workspace 目錄,不要存到 HOME 目錄。

要設定上面所規劃的目錄,首先要設 R_USER 值,然後把 Renviron, Rprofile 檔案儲存到 R_USER 所設定的目錄,這樣就可以將 HOME 改成 R_USER 所設定的目錄。另外,把 Rconsole 有儲存到 R_USER 所設定的目錄,Rgui console 的設定值就會讀取 R_USER 目錄的 Rconsole 設定值

實際的設定步驟如下:
  • 系統 >> 進階系統設定 >> 環境變數 >> 使用者環境變數 >> 新增變數名稱 R_USER,變數值 D:/elvis/home/R/etc/
  • 開啟文字編輯器(Brackets),編輯 .Renviron 檔案:
         WORK=D:/R/workspace
         R_LIB=D:/R/lib
  • 編輯 .Rprofile 檔案:
        WD = Sys.getenv("WORK")
        setwd(WD)

  • 開啟 Rgui.exe console >> 編輯 >> 偏好設定 >> 將 font size 設定 14pt, Language for menus and messages 設成 en
 注意事項:
  • 在 Windows 檔案總管中無法更改或使用 .Renviron, .Rprofile 檔名,必須在 Brackets 編輯器存檔時,把檔名存成 .Renviron, .Rprofile
  •  設定目錄的符號是 / ,不是 Windows 的 \ 符號
  • 曾經嘗試將 R_USER 設到 Google 雲端硬碟,但是,Rgui console 在 getwd() 時會出現亂碼,導致 setwd()無法讀取中文的目錄名稱,Rgui console 可能需要再做進一步的設定,設定 utf-8 的環境
另外一種設定環境變數的方式是:在使用者環境變數內,直接指定 R_ENVIRON_USER, R_PROFILE_USER 到特定的檔案,即

R_ENVIRON_USER = d:/elvis/home/R/etc/Renviron
R_PROFILE_USER = d:/elvis/home/R/etc/Rprofile

完成以上的]環境設定,R 與 Emacs 及 LaTeX(XeLaTeX) 可以結合再一起,在 LaTeX(XeLaTeX) 可以讀取 R 程式碼及繪圖,這些設定也是未來開發 R 程式設計師需要完成的工作,讓自己有一個整合的開發環境,以提高開發的效率。

留言

這個網誌中的熱門文章

CodeBlocks 多國語言的設定步驟

多年來一直都是使用 CodeBlocks 英文的介面,不曾想過要將 CodeBlocks 設定成多國語言的開發環境,對於不習慣於英文介面的國人,設定中文的使用介面是非常需要的環境,在 CodeBlocks 論壇有一篇文章提到 :Do you know http://wiki.codeblocks.org/index.php?title=Internationalization ?這個連結說明在 Windows 系統如何設定 CodeBlocks 成為 Internationalization 的環境,整個設定過程如下: 到 CodeBlocks 翻譯文件網站 下載 .mo 檔案:下載時需要 Ubuntu One 的帳號及密碼,登入後點選 .mo 檔案(不要下載 .po 檔是可編輯檔) 系統會傳送一封信件,點選信件的連結,將 .mo 檔案下載 將檔案複製到 C:\Codeblocks\share\CodeBlocks\locale\zh_TW 目錄(沒有這個目錄請自己建立) 開啟 CodeBlocks >> Setting >> Environment >> View >> Internationalization 選項打勾 >> 點選 Chinese 重新開啟 CodeBlocks 要加入其他語言的 .mo 檔案,則在 locale 目錄中新增其他語言的目錄名稱,例如: 德國 de_DE,這樣 CodeBlocks 就是多國語言的開發環境了。 當如果要恢復英文的介面,只要取消 Internationalization 的選項勾選,然後再次重新開啟 CodeBlocks 就回到英文的開發環境。 後記: CodeBlocks 翻譯文件網站 要下載 .mo or .po 檔案需要等待系統回復信件到 Email 信箱,無法及時處理,將這些檔案儲存在 Google Driver 的 src/CodeBlocks 目錄,以後可以從這裡直接取用。

輸入及轉換 Unicode 編碼

如何輸入羅馬數字?不管大寫的數字 ,或者小寫的數字,不知道 Unicode 編碼的人總是會以輸入英文字母 i or I 來替代,即輸入 i, ii, iii, or I, II, III,或許他們不會面臨要輸入 4 以上的羅馬數字,這樣的做法就可以在人類的視覺誤差中暫時瞞騙過關,然而,這樣的作法卻帶來資訊系統不可見的人為問題。這篇文章將描述如何輸入正確的羅馬數字?如何搜尋 Unicode 編碼?以及如何輸入 Unicode 編碼。關於 Unicode 編碼輸入與顯示是一個相當複雜的議題,這篇文章僅針對在 Windows 作業系統中的應用程式如何輸入與搜尋 Unicode 編碼?如何在 Unicode 編碼與對應字元之間做轉換?不會涉及其他的議題;若依照下面描述的輸入方式輸入 Unicode 編碼,不保證能完全符合你/妳所使用個人電腦系統的環境,請再參考相關的文章來解決輸入與顯示 Unicode 編碼的問題。 Unicode 編碼的輸入方式 在 Wiki 的文件 中說明如何在不同環境下輸入特殊字元的 Unicode 編碼,在 Windows 作業系統中輸入 Unicode 編碼的方式如下: Microsoft Word or Wordpad:先輸入 unicode 的編碼,再按下 Alt + x,例如,在 word 中輸入 1f370,然後按下 Alt+x,就會顯示 🍰( &#x1f370)的字元 其他 Microsoft 所有應用程式:應用程式包括 Microsoft PowerPoint, Excel, VS Code 等程式,且要支援 Unicode 編碼的版本,都可以使用注音輸入法來輸入 Unicode 編碼;首先切換到注音輸入法的中文輸入模式,然後按下~鍵(Esc 下方的鍵) + u + Unicode 編碼,特別要注意輸入的數字是鍵盤上方的數字鍵,不可以使用 Number Pad 的數字鍵。 查詢 Unicode 編碼 Unicode編碼的對應字元可以連結到 The Unicode Consortium 的 Code Charts 網站,在網站中輸入你/妳想要字元的 Unicode 編碼,如此就可以找到這個 Unicode 編碼的字元,問題是:我們通常是心中有字元的圖像,或者是要先看到字元的樣子,才知道我們要使用哪一個字

cmd 程式無法執行的解決步驟

因為要設定 cmd 的編碼方式為 Unicode 編碼( chcp 65001),可能不小心修改了編碼,而導致cmd 無法開啟,主要的原因是:「cmd 變成沒有編碼」,所以才造成 cmd 無法開啟。在 Windows 8 中要恢復 cmd 編碼的步驟如下: 1. 滑鼠移到左上角,會出現功能的選項,點選「搜尋」的圖示 2. 在輸入的格子中,輸入「cmd」但是不要按下 enter 3. 滑鼠移到「cmd 命令提示字元」,,按下「滑鼠右鍵」 4. 下面會出現一些選項,點選「開啟檔案位置」,如此可以找到 cmd 命令提示字元的位置 5. 在「 命令提示字元」檔案中按下滑鼠右鍵,並點選「內容」 6. 點選「選項」,把「950 - Big 5 繁體中文」的編碼加入