这可能是此问题的另一次重复,但我们继续。
我正在构建.Rprofile软件包检查器。对于发送给非技术人员的r脚本,我也使用类似的脚本。它检查软件包,如果不存在则安装它们,如果存在则加载它们。我在软件包检查中发现了大量资源,但是由于某种原因,一旦您开始将这些检查粘贴到函数中或.Rprofile,事情就会变得很奇怪。
如果有人可以告诉我此功能出了什么问题,那将是极大的帮助。我真的为此挠头了。
startup_packagecheck<-function(pkg){
library("utils")
if(!is.element(pkg, installed.packages()))
return(TRUE)
}
startup_packagecheck(pkg=MASS)
答案 0 :(得分:0)
在问题中,传递给函数的对象名为MASS
。该对象应该存在于.GlobalEnv
中,并且与字符串"MASS"
无关,需要让is.element
看到它是否是installed.packages
返回的字符向量的元素。
解决问题的方法是将字符串传递给函数。
startup_packagecheck<-function(pkg){
!is.element(pkg, utils::installed.packages())
}
startup_packagecheck(pkg = MASS)
#[1] FALSE
Packs <- c("MASS", "ggplot2")
startup_packagecheck(pkg = Packs)
#[1] FALSE FALSE