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


R get 返回命名對象的值


R語言 get 位於 base 包(package)。

說明

按名稱搜索一個對象 ( get ) 或零個或多個對象 ( mget )。

用法

get(x, pos = -1, envir = as.environment(pos), mode = "any",
    inherits = TRUE)

mget(x, envir = as.environment(-1), mode = "any", ifnotfound,
     inherits = FALSE)

dynGet(x, ifnotfound = , minframe = 1L, inherits = FALSE)

參數

x

為了get,對象名稱(以字符串或符號形式給出)。
為了mget,對象名稱的字符向量。

pos, envir

在哪裏尋找對象(參見“詳細信息”); if 省略搜索,就像對象的名稱出現在表達式中時未加引號一樣。

mode

尋求對象的模式或類型:請參閱“詳細信息”部分。

inherits

是否應該搜索環境的封閉框架?

ifnotfound

為了mget, Alist未找到該項目時要使用的值:如有必要,它將被強製為列表。
為了dynGet任何R對象,例如調用stop().

minframe

指定要查看的最小幀號的整數。

細節

pos 參數可以通過以下幾種方式指定查找對象的環境: 作為正整數(search 列表中的位置);作為搜索列表中元素的字符串名稱;或作為 environment(包括使用 sys.frame 訪問當前活動的函數調用)。默認值 -1 表示調用 get 的當前環境。 envir 參數是指定環境的另一種方法。

這些函數查看每個名稱 x 是否在指定環境中都有綁定到它的值。如果inheritsTRUE 並且在指定環境中未找到x 的值,則搜索環境的封閉框架,直到遇到名稱x。有關環境及其 shell 結構的詳細信息,請參閱environment 和“R 語言定義”手冊。

如果指定了mode,則僅查找該類型的對象。 mode 這裏混合了 typeofmode 的含義: "function" 涵蓋原始函數和運算符, "numeric""integer""double" 均指任何數值類型, "symbol""name" 等效,但必須使用 "language" (而不是 "call""(" )。

對於 mgetmodeifnotfound 的值可以與 x 相同長度或長度為 1。參數 ifnotfound 必須是一個列表,其中包含要使用的值(如果請求的項目為未找到或具有一個參數的函數,如果未找到該項目,將調用該函數,參數為所請求的項目的名稱。

dynGet() 有點實驗性,可在另一個函數中使用。它在調用者中查找對象,即函數的 sys.frame() 。謹慎使用。

對於 get ,找到的對象。如果沒有找到對象,則會產生錯誤。

對於 mget ,對象的命名列表(通過 ifnotfound 找到或指定)。

注意

a <- get(nam) 的逆向(或 “inverse”)是 assign(nam, a) ,將 a 分配給名稱 nam

inherits = TRUE是默認值getR但對於 S 則不然,它有不同的含義。

例子

get("%o%")

## test mget
e1 <- new.env()
mget(letters, e1, ifnotfound = as.list(LETTERS))

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

exists 用於檢查對象是否存在; get0 用於檢查存在性和獲取對象的有效方法。

assignget() 的逆,見上文。

使用 getAnywhere 在任何地方(包括其他命名空間)搜索對象,並使用 getFromNamespace 在特定命名空間中查找對象。

相關用法


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