猿问
下载APP

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

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



慕运维1137616
浏览 69回答 3
3回答

慕莱坞7535251

日常工作中没有多少人。但是,根据两个函数的文档(通过?在函数名称之前输入并按下enter键访问),require在函数内部使用,因为它输出警告并在未找到包时继续,但library会抛出错误。

慕村9548890

另一个好处require()是它默认返回一个逻辑值。TRUE如果包是加载的,FALSE如果不是。> test <- library("abc")Error in library("abc") : there is no package called 'abc'> testError: object 'test' not found> test <- require("abc")Loading required package: abcWarning message:In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,&nbsp; :&nbsp; there is no package called 'abc'> test[1] FALSE所以你可以使用require()像下面这样的结构。如果您想将代码分发到我们的R安装,那么主要方便的是可能没有安装软件包。if(require("lme4")){&nbsp; &nbsp; print("lme4 is loaded correctly")} else {&nbsp; &nbsp; print("trying to install lme4")&nbsp; &nbsp; install.packages("lme4")&nbsp; &nbsp; if(require(lme4)){&nbsp; &nbsp; &nbsp; &nbsp; print("lme4 installed and loaded")&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; stop("could not install lme4")&nbsp; &nbsp; }}

慕盖茨4494581

require()如果要在必要时安装软件包,可以使用,例如:if (!require(package, character.only=T, quietly=T)) {&nbsp; &nbsp; install.packages(package)&nbsp; &nbsp; library(package, character.only=T)}对于您可以使用的多个包for (package in c('<package1>', '<package2>')) {&nbsp; &nbsp; if (!require(package, character.only=T, quietly=T)) {&nbsp; &nbsp; &nbsp; &nbsp; install.packages(package)&nbsp; &nbsp; &nbsp; &nbsp; library(package, character.only=T)&nbsp; &nbsp; }}专业提示:在脚本中使用时,可以通过指定repos参数来避免对话框屏幕install.packages(),例如install.packages(package, repos="http://cran.us.r-project.org")你可以用require()和library()在suppressPackageStartupMessages(),好了,抑制包装启动消息,并使用这些参数require(..., quietly=T, warn.conflicts=F),如果需要保持安静安装。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答