簡體   English   中英

導入NAMESPACE和DESCRIPTION問題嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM