美文网首页Cook RR语言编程进阶
【r<-开发】命名空间的使用

【r<-开发】命名空间的使用

作者: 王诗翔 | 来源:发表于2018-12-28 18:49 被阅读10次

有4个函数可以使用三方包的功能(函数、数据等),基于它们是否加载(Load)或绑定(attach),找不到包时的反馈而有所不同。

抛出error 返回 FALSE
Load loadNamespace("x") requireNamespace("x", quietly = TRUE)
Attach library(x) require(x, quietly = TRUE)

4个函数里面,你应该只使用两个:

  • 在数据分析脚本中使用library(x),它会在包找不到时抛出错误并且停止脚本的运行。你想要绑定包以节省代码键入。永远不要在开发包时使用library()函数。

  • 在包中使用requireNamespace(x, quietly = TRUE)用来进行一个特定的行为,如当建议包找不到时抛出一个错误。

你永远也不需要使用 require() (requireNamespace()更好)或loadNamespace() (仅需要在R包内部代码中使用).。永远不要在一个包中使用require()library(),相反, 应该在DESCRIPTIONDependsImports 字段部分填入包名。

那么,ImportsDepends部分到底有什么区别呢?什么时候该使用它们呢?

ImportsDepends包部分会确保你所需要的依赖包被安装,主要的区别是Imports中的包仅仅会被导入,而Depends中的包会被绑定,没有其他的区别了。

假设你开发的包需要dplyr,你把它列到了Depends,那么载入你开发的包的用户它会发现dplyr也被载入了,而且能够直接使用里面的函数。而写在Imports的话,dplyr里面的函数用户是不可以直接使用的。。

相关文章

  • 【r<-开发】命名空间的使用

    有4个函数可以使用三方包的功能(函数、数据等),基于它们是否加载(Load)或绑定(attach),找不到包时的反...

  • NDK开发:C++基础

    一、命名空间 standard:标准命名空间 命名空间类似于java中的包。 自定义命名空间 使用命名空间 ::为...

  • 八、基于XML Schema的简化配置方式

    使用p:命名空间简化配置: Chinese.java beans.xml 使用c:命名空间简化配置: p:命名空间...

  • Chapter 18 Large-scale project t

    命名空间 inline命名空间 inline声明的命名空间, 可以无视本层命名空间, 而可以被直接使用. 用处: ...

  • PHP 现代开发基础知识: 命名空间 - namespace

    目录 为什么使用命名空间使用命名空间 为什么使用命名空间 目的,就是为了避免出现命名冲突,导致 PHP 运行失败。...

  • C++ 语言类中各个重要函数原理

    1.命名空间的自定义及使用 全局使用及局部使用。 命名空间变量及函数重复的使用方式 命名空间嵌套 2.构造函数详解...

  • C++命名空间

    C++ 命名空间 C++为了区分多个xyz的函数的时候,需要使用命名空间进行区分。 定义命名空间 using 使用...

  • C++ 高级特性

    C++ 命名空间 定义命名空间 您可以使用 using namespace 指令,这样在使用命名空间时就可以不用在...

  • 教你写 jquery 插件

    类级别的插件开发: 1.1使用jQuery.extend(object); 1.2 使用命名空间虽然在jQuery...

  • Python动态创建变量

    命名空间locals() 局部命名空间 globals() 全局命名空间 创建局部变量--全局不能使用 创建全局变...

网友评论

    本文标题:【r<-开发】命名空间的使用

    本文链接:https://www.haomeiwen.com/subject/xymelqtx.html