背景
在R语言中,载入R包函数有两个:library() 和 require(),但是两者之间又存在很大的不同
区别
- 在初始环境下载入一个R包,如果这个包不存在,执行
library()会提示Error,并且停止运行;执行require()会提示Warning,继续执行运算
library("abc")Error in library("abc") : there is no package called 'abc'
require("abc")
## Loading required package: abc
## Warning in library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :## there is no package called 'abc'
- 在载入的包不存在时,
library()只停止运算,只会显示错误提示,没有返回值;require()会返回一个逻辑值
test <- library("abc")Error in library("abc") : there is no package called 'abctest #显示错误提示Error: object 'test' not found
test <- require("abc")
## Loading required package: abc
## Warning in library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :## there is no package called 'abc'
test
## [1] FALSE
应用
在自定义函数中,可以利用require()函数来检测运行环境,确保函数可以正确运行
if(require("MASS")){print("MASS is loaded correctly")} else {print("you need install MASS package")install.packages("MASS")if(require(MASS)){print("MASS installed and loaded")} else {stop("could not install MASS")}}
