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