[英]import NAMESPACE and DESCRIPTION question?
在安裝軟件包時,R將查看DESCRIPTION文件中的“ Depends”和“ Imports”,以查看需要安裝哪些其他軟件包。
將軟件包“ library()”附加到R會話時,R將加載“導入”下列出的所有軟件包,並附加“依賴”下列出的任何軟件包。
我的問題是關於在NAMESPACE文件中導入函數? 我對於在該文件中導入函數的目的以及它的作用感到困惑。
附加主軟件包時,是否將NAMESPACE文件中的導入函數附加到R會話?
如果答案是肯定的,那么這不是“ Depends”已經在做什么嗎? 我能看到的唯一區別是,可以使用NAMESPACE將各個函數附加到會話上,其中“ Depends”附加了整個程序包。
我建議閱讀Hadley的R Packages書中的Namespaces一章 。 簡而言之,答案是否定的。
附加主軟件包時,是否將NAMESPACE文件中的導入函數附加到R會話?
不,他們不是。 導入的功能可在包內部使用,但未附加到用戶的搜索樹中。
當然,另一個信息來源是Writing R Extensions 。 他們將IMPORTS描述為:
“導入”字段列出了其名稱空間是從中導入的軟件包(如NAMESPACE文件中指定的),但無需附加軟件包。
作為演示,當前版本的ggplot2
v 3.2.1在其NAMESPACE文件中具有import(scales)
。 在新的R會話中,我們可以加載ggplot2
並觀察到scales
包未附加:
library(ggplot2)
percent(1)
# Error in percent(1) : could not find function "percent"
scales::percent(1)
# [1] "100%"
ggplot2
在內部使用scales
函數,無需使用package::function
表示法就可以這樣做。 這就是import(scales)
完成的工作。 但是,與Depends
不同, scales
沒有為用戶附加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.