exists
位於 base
包(package)。 說明
尋找一個R給定名稱的對象並可能返回它
用法
exists(x, where = -1, envir = , frame, mode = "any",
inherits = TRUE)
get0(x, envir = pos.to.env(-1L), mode = "any", inherits = TRUE,
ifnotfound = NULL)
參數
x |
變量名(以字符串或符號形式給出)。 |
where |
在哪裏尋找對象(參見詳細信息部分);如果省略,該函數將進行搜索,就好像對象名稱在表達式中出現時未加引號一樣。 |
envir |
另一種指定要查看的環境的方法,但通常使用 |
frame |
調用列表中的一個框架。相當於將 |
mode |
尋求對象的模式或類型:請參閱“詳細信息”部分。 |
inherits |
是否應該搜索環境的封閉框架? |
ifnotfound |
當 |
細節
where
參數可以通過以下幾種方式指定查找對象的環境: 作為整數(search
列表中的位置);作為搜索列表中元素的字符串名稱;或作為 environment
(包括使用 sys.frame
訪問當前活動的函數調用)。 envir
參數是指定環境的另一種方法,但主要是為了向後兼容。
此函數查看名稱 x
是否在指定環境中具有綁定到它的值。如果inherits
是TRUE
並且在指定環境中未找到x
的值,則搜索環境的封閉框架,直到遇到名稱x
。有關環境及其 shell 結構的詳細信息,請參閱environment
和“R 語言定義”手冊。
警告:
inherits = TRUE
是默認行為R但不適合S。
如果指定了mode
,則僅查找該類型的對象。 mode
可以指定集合 "numeric"
和 "function"
之一(請參閱 mode
):集合的任何成員都足夠。 (即使指定了集合的成員也是如此,因此例如 mode = "special"
將查找任何類型的函數。)
值
exists():
邏輯,當且僅當找到具有正確名稱和模式的對象時為 true。
get0():
對象 - 來自 get(x, *)
- 如果 exists(x, *)
為 true,否則 ifnotfound
。
注意
使用 get0()
,而不是易於閱讀但效率有些低的
if (exists(myVarName, envir = myEnvir)) { r <- get(myVarName, envir = myEnvir) ## ... deal with r ... }
您現在可以使用更高效的(並且稍微難以閱讀)
if (!is.null(r <- get0(myVarName, envir = myEnvir))) { ## ... deal with r ... }
例子
## Define a substitute function if necessary:
if(!exists("some.fun", mode = "function"))
some.fun <- function(x) { cat("some.fun(x)\n"); x }
search()
exists("ls", 2) # true even though ls is in pos = 3
exists("ls", 2, inherits = FALSE) # false
## These are true (in most circumstances):
identical(ls, get0("ls"))
identical(NULL, get0(".foo.bar.")) # default ifnotfound = NULL (!)
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
get
和 hasName
。對於完全不同類型的 “existence” 檢查,即如果指定了函數參數,missing
;還有一種不同的類型,即如果文件存在,則 file.exists
。
相關用法
- R expand.grid 從因子變量的所有組合創建 DataFrame
- R expression 未計算的表達式
- R extSoftVersion 第三方軟件的報告版本
- R eval 計算(未計算的)表達式
- R environment 環境接入
- R eapply 將函數應用於環境中的值
- R eigen 矩陣的譜分解
- R encodeString 對字符向量進行編碼以供打印
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
- R noquote “無引號”字符串打印類
- R warning 警告信息
- R rapply 遞歸地將函數應用於列表
- R basename 操作文件路徑
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Is an Object Defined?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。