清理 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
部分将消失。