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?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。