setwd("d:/love")
here
在R中,要跟R說現在的工作目錄在哪裡,可以使用setwd(),如下語法就可設置在D磁碟的love資料夾,則任何R所產生的檔案就自動會放在D磁碟的love資料夾,而讀取資料時,也可省略此完整資料夾的詳細地址,僅需要寫檔案的名稱。
<- readxl::read_excel('人口數.xls')
data_a ::write_xlsx(data_a,'人口數複本.xlsx') writexl
上述就等於是
<- readxl::read_excel('d:/love/人口數.xls')
data_a ::write_xlsx(data_a,'d:/love/人口數複本.xlsx') writexl
但是用setwd()的方法會有個缺點,就是如果你要跟別人合作,你把此語法給別人,對方可能沒有D磁碟,而且有很大的機率應該也沒有love資料夾,那麼,他要執行你的語法時,就得花時間改所有檔案的路徑。又或者,即使不是跟別人合作,則我們自己可能將舊有的專案資料放到其他磁碟機,則相同的情形也出現,就是也不能執行這些語法,因為檔案路徑已經不同。
為解決上述問題,可以使用here套件。here是以project為運作基礎,在RStudio可新增project,指定project的目錄。例如,若在D磁碟有個project-A,其下有個data資料夾,在data資料夾中有個名稱為「人口數」的excel檔案,如下圖所示
要讀取該「人口數」檔案,以here套件的用法如下
library(here)
here()
<- readxl::read_excel(here('data','人口數.xls')) population
這樣若將此project複製給其他人,或者我們自己移動路徑,如將D磁碟的project-A改到E磁碟的project-AA,則只要使用RStudio建立新的project,目錄是在E磁碟,將用到的檔案複製到該project-AA底下,如圖所示,
那麼原來的所有語法都不用更改一個字,完全可以執行。如要讀進該人口數檔案的語法仍然一樣,
library(here)
here()
<- readxl::read_excel(here('data','人口數.xls')) population
但從執行結果可看到,here()的目錄都已經是在E磁碟的project-AA,可說無痛移轉。