當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R getFromNamespace 用於開發命名空間的實用函數

R語言 getFromNamespace 位於 utils 包(package)。

說明

用於訪問和替換命名空間中的非導出函數的實用函數,用於開發具有命名空間的包。

它們不應該在生產代碼中使用(也許 assignInMyNamespace 除外,但請參閱“注釋”)。

用法

getFromNamespace(x, ns, pos = -1, envir = as.environment(pos))

assignInNamespace(x, value, ns, pos = -1,
                  envir = as.environment(pos))

assignInMyNamespace(x, value)

fixInNamespace(x, ns, pos = -1, envir = as.environment(pos), ...)

參數

x

對象名稱(以字符串形式給出)。

value

一個R對象。

ns

命名空間,或給出命名空間的字符串。

pos

在哪裏查找對象:請參閱get

envir

指定要查看的環境的另一種方法。

...

要傳遞給編輯器的參數:請參閱edit

細節

assignInMyNamespace 旨在從包內的函數調用,並選擇命名空間作為調用它的函數的環境。

命名空間可以通過多種方式指定。例如,使用 ns = "stats" 是最直接的,但可以通過用於 get 的任何方法來指定加載的包: ns 也可以是打印為 <namespace:foo> 的環境。

getFromNamespace 類似於(但早於)::: 運算符:它在指定命名空間的方式上更加靈活。

fixInNamespace 在名為 x 的對象上調用 edit,並分配修改後的對象來代替原始對象。為了與 fix 兼容,x 可以不加引號。

getFromNamespace 返回找到的對象(或給出錯誤)。

調用 assignInNamespaceassignInMyNamespacefixInNamespace 是因為它們會產生更改命名空間中的對象的副作用。

警告

assignInNamespace 不應在最終代碼中使用,如果從包中調用,將來會拋出錯誤。某些用途已經被禁止。

注意

assignInNamespaceassignInMyNamespacefixInNamespace 更改命名空間中的副本,但不會更改已從命名空間導出的任何副本,特別是包中該名稱的對象(如果已附加)以及已導入到其他文件中的任何副本命名空間。它們實際上僅用於未從名稱空間導出的對象。如果發現注冊為 S3 方法的副本,他們確實會嘗試更改該副本。

它們隻能用於更改命名空間中對象的值,而不能用於創建新對象。

例子

getFromNamespace("findGeneric", "utils")
## Not run: 
fixInNamespace("predict.ppr", "stats")
stats:::predict.ppr
getS3method("predict", "ppr")
## alternatively
fixInNamespace("predict.ppr", pos = 3)
fixInNamespace("predict.ppr", pos = "package:stats")

## End(Not run)

也可以看看

get , fix , getS3method

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Utility Functions for Developing Namespaces。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。