[R]中加载和附加的区别

时间:2017-06-03 08:00:36

标签: r

在RStudio中,当我选中并取消选中一个包时,我会看到以下命令。

library("ggplot2", lib.loc="~/R/win-library/3.4")
detach("package:ggplot2", unload=TRUE)

有人可以解释什么是卸载= TRUE吗?

从概念上讲,加载/卸载与附加/分离之间有区别吗?

RStudio Attaching and Loading of packages

2 个答案:

答案 0 :(得分:2)

From R's official help pages(另请参见R Packages - Namespaces):

  

名称空间功能所需的一切都应在加载/卸载时间 .onLoad 和.onUnload挂钩处理。

     

例如,可以加载DLL(除非由“ NAMESPACE”文件中的useDynLib指令完成),然后在.onLoad中初始化,然后在.onUnload中卸载。

     

仅将 .onAttach 用于仅在包对用户可见时(例如启动消息)或需要在之后运行的操作。打包环境已创建。

  • 附加 .onAttach
    • 因此意味着软件包已附加到用户空间
    • 又名全球环境
    • 通常这是通过library(pkg)
    • 完成的
    • 您可以使用常规的fun()语法

  • 正在加载 .onLoad
    • 因此,意味着该软件包(以任何方式)可用于当前R会话
    • (例如,通过加载/附加依赖于它的另一个程序包或第一次使用pkg::fun()语法)
    • 尽管您不会在全局环境中找到函数
    • 您可以使用pkg::fun()

答案 1 :(得分:0)

与包环境相关的分离(与用户更相关)
unload = TRUE与命名空间环境相关(与其他包更相关)

分离后,您不能直接使用该包内的任何功能 但unloadnamespace不会阻止你调用该函数,但其​​他包不能直接使用它的函数