require()和library()之间有什么区别?

require()library()之间有什么区别?


日常工作中没有太多。

但是,根据这两个函数的文档(通过在函数名称前面加一个?并敲入回车来访问), require在函数内部使用,因为它会输出警告,如果找不到包,则继续;而library会抛出错误。


require()另一个好处是它默认返回一个逻辑值。 如果包已加载则为TRUE否则为FALSE

> test <- library("abc")
Error in library("abc") : there is no package called 'abc'
> test
Error: object 'test' not found
> test <- require("abc")
Loading required package: abc
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called 'abc'
> test
[1] FALSE

所以你可以在下面的结构中使用require() 。 如果您想将代码分发到我们的R安装,那么主要方便的是可能未安装软件包。

if(require("lme4")){
    print("lme4 is loaded correctly")
} else {
    print("trying to install lme4")
    install.packages("lme4")
    if(require(lme4)){
        print("lme4 installed and loaded")
    } else {
        stop("could not install lme4")
    }
}

如果只有在必要时才需要安装软件包,则可以使用require() ,例如:

if (!require(package, character.only=T, quietly=T)) {
    install.packages(package)
    library(package, character.only=T)
}

对于可以使用的多个包

for (package in c('<package1>', '<package2>')) {
    if (!require(package, character.only=T, quietly=T)) {
        install.packages(package)
        library(package, character.only=T)
    }
}

专业提示:

  • 在脚本内部使用时,可以通过指定install.packages()repos参数来避免对话屏幕,例如

    install.packages(package, repos="http://cran.us.r-project.org")
    
  • 您可以将suppressPackageStartupMessages() require()library()包装在suppressPackageStartupMessages()中,以便抑制包启动消息,并且还可以使用参数require(..., quietly=T, warn.conflicts=F)来保持安装安静。

  • 链接地址: http://www.djcxy.com/p/12829.html

    上一篇: What is the difference between require() and library()?

    下一篇: What's the difference between `=` and `<