使用if语句引用不在工作空间中的变量

时间:2012-06-29 08:36:37

标签: r

我想创建一个可以处理可能已创建或尚未创建的对象的函数。

在这个函数的开头,我想有一个快速的“if”语句,声明是否已经创建了某个变量。在这种情况下,时间戳。

TS<-date()

fun<-function(){
if(TS=="")
{print("No Time Stamp Info")}
else
{print("Time Stamp created at"); TS}
}

或者

TS<-date()

fun<-function(){
if(is.character(TS))
{print("Time Stamp created at"); TS}
else
{print("No Time Stamp Info")}
}

但是当然如果我们删除时间戳并且只是在没有首先为TS分配任何值的情况下进行以下操作:

#TS<-date()

fun<-function(){
if(TS=="")
{print("No Time Stamp Info")}
else
{print("Time Stamp created at"); TS}
}

因为TS不存在而导致错误。我想找到一种方法,这样如果R工作区中没有变量“TS”,我会得到“No Time Stamp Info”,而不是错误

无论如何都要正确设置可以执行此操作的功能吗?

2 个答案:

答案 0 :(得分:4)

怎么样:

if (exists("TS")) ...
如果TRUE存在,

将返回TS

答案 1 :(得分:0)

也许包括

if("TS" %in% ls())

查看是否先定义TS

如果只在TS中定义.GlobalEnv,那么您需要包含

if("TS" %in% ls(envir = .GlobalEnv))

相反,可能会根据可能创建“TS”的环境更改envir参数。