簡體   English   中英

如何區分包命名空間環境與其他環境對象

[英]How to distinguish package namespace environment from other environment objects

有沒有辦法以編程方式區分包環境和非包環境對象? 例如,下面的對象xy都是環境,具有相同的類和屬性。

x <- as.environment(cars)
y <- getNamespace("graphics")

但是從print方法來看,存在差異:

> print(x)
<environment: 0x1d38118>
> print(y)
<environment: namespace:graphics>

現在假設我有一個任意對象,我如何確定它中的哪一個(不查看print的輸出)? 我想知道這個,以確定如何將對象存儲在磁盤上。 在前者的情況下,我需要存儲環境的列表表示(可能還有它的父節點),但對於后者,我只存儲包的名稱和版本。

isNamespace

isNamespace(y)
# [1] TRUE
isNamespace(x)
# [1] FALSE

並且,為了將來參考,當你有這樣的問題時, apropos通常很有幫助。

apropos("namespace")
#  [1] "..getNamespace"         ".BaseNamespaceEnv"      ".getNamespace"         
#  [4] ".methodsNamespace"      "asNamespace"            "assignInMyNamespace"   
#  [7] "assignInNamespace"      "attachNamespace"        "fixInNamespace"        
# [10] "getFromNamespace"       "getNamespace"           "getNamespaceExports"   
# [13] "getNamespaceImports"    "getNamespaceInfo"       "getNamespaceName"      
# [16] "getNamespaceUsers"      "getNamespaceVersion"    "isBaseNamespace"       
# [19] "isNamespace"            "loadedNamespaces"       "loadingNamespaceInfo"  
# [22] "loadNamespace"          "namespaceExport"        "namespaceImport"       
# [25] "namespaceImportClasses" "namespaceImportFrom"    "namespaceImportMethods"
# [28] "packageHasNamespace"    "parseNamespaceFile"     "requireNamespace"      
# [31] "setNamespaceInfo"       "unloadNamespace"    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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