清理 R 的環境
Gustavo du Mortier
2020年12月31日
在 R 中開始一個新專案或啟動一個新的工作會話之前,建議先清理環境。這意味著要刪除所有物件,並分離上一個會話期間安裝的所有包。
清理整個環境的最簡單、最可靠的方法是重新啟動 R,注意關閉應用程式時不要儲存當前的 R 映像。在 RStudio 中,你必須將 Save workspace to .RData on exit
選項設定為 Never
,並禁用重啟時恢復環境的選項。
你還應該確保專案資料夾中沒有剩餘的 .RData
檔案。這些檔案是不可見的,所以你需要使用命令列檢查這些檔案是否存在,如果存在,就刪除它們。
在不重啟 R 的情況下清除環境
也可以使用程式碼將 R 環境置於乾淨狀態。但是,沒有一種方法可以保證讓環境像初始化 R 時一樣乾淨。如果你想用某種方法分離除基本包以外的所有包,你可以建立一個函式-DetachPackages
來自動完成這個任務。
這個函式建立了一個基本包名的向量,你應該防止分離這些包。然後它建立一個包含所有已安裝包名的列表,並從這個列表中減去基本列表中的包名。最後,它將分離那些名字仍在 package.list
中的軟體包。
DetachPackages <- function() {
basic.packages <- c("package:stats","package:graphics","package:grDevices","package:utils","package:datasets","package:methods","package:base")
package.list <- search()[ifelse(unlist(gregexpr("package:",search()))==1,TRUE,FALSE)]
package.list <- setdiff(package.list,basic.packages)
if (length(package.list)>0) {
for (package in package.list) {
detach(package, character.only=TRUE)
}
}
}
你可以先用這些命令安裝並載入一個包,比如 readxl
,來嘗試下這個功能。
install.packages("readxl")
library(`readxl`)
如果你執行 sessionInfo()
,在 other attached packages
部分,你會得到這個作為輸出的一部分。
other attached packages:
[1] readxl_1.3.1
然後你可以呼叫 DetachPackages()
函式,再呼叫 sessionInfo()
,other attached packages
部分將消失。