当我调试一个复杂的脚本时,我经常需要重复地获取脚本的源代码,以便rstudio断点处于活动状态。在此设置中,我不希望安装已加载(附加?)的包。,因为rstudio强烈建议在尝试安装已加载(附加?)的包时重新启动r。,并且我的一些代码正在大型(大约10-30gb)数据文件上测试,对于这些文件,将文件上载到r非常耗时。
到目前为止,我从来没有必要区分加载的程序和附加的程序,因为我一直都是两者兼而有之。但我现在正在尝试编写一个函数,以避免安装已加载(附加?)的程序。,我试图理解避免只重新安装已加载的包、仅重新安装已附加的包、仅重新安装已加载和附加的包或仅重新安装已加载或附加的包的相关含义。
下面的代码应该更新所有软件包,然后安装从(可能)新软件包矢量中获取的所有软件包,这些软件包要么已卸载,要么未附加,或者两者都未附加。但是,如果加载了一个包,但既没有附加也没有安装(如果可能的话),则不会安装它。在任何可能的情况下,这种限制会导致问题吗?
install.packs <- function(pks, ...){
update.packages(ask=FALSE)
uninstalled <- pks[!(pks %in% installed.packages(...)[ , 1])]
unattached <- pks[!(pks %in% (.packages(...)))]
new_pks <- unique(c(uninstalled, unattached))
install.packages(unattached, repos = "https://cloud.r-project.org/", ...)
}