R:';数据';对象总是存在吗?

R:';数据';对象总是存在吗?,r,R,我有一个叫做“数据”的数据集。这是一个数据帧 由于加载需要很长时间,我会在继续之前检查是否尚未加载。因此,我计划使用: exists('data') 不幸的是,此指令似乎总是返回true: > ls(all=TRUE) character(0) > exists('data') [1] TRUE > exists('mflskkl') [1] FALSE 我错过了什么 谢谢。R中的对象存在于许多地方。您需要确定希望该对象存在的位置。在您的例子中,我猜您正在测试对象是否存在于

我有一个叫做“数据”的数据集。这是一个数据帧

由于加载需要很长时间,我会在继续之前检查是否尚未加载。因此,我计划使用:

exists('data')
不幸的是,此指令似乎总是返回true:

> ls(all=TRUE)
character(0)
> exists('data')
[1] TRUE
> exists('mflskkl')
[1] FALSE
我错过了什么


谢谢。

R中的对象存在于许多地方。您需要确定希望该对象存在的位置。在您的例子中,我猜您正在测试对象是否存在于用户默认的全局环境中。阅读
exists
的帮助,您会发现您还需要
inherits=FALSE

> test2=function(){exists("data",envir=.GlobalEnv, inherits=FALSE)}
> test2()
[1] FALSE
> data=999
> test2()
[1] TRUE
> rm(data)
> test2()
[1] FALSE

请注意,这样做可能是错误的——最好将对象作为参数传递给可重用函数,而不是依赖全局环境中的东西。但我认为你可能只是有一些大的脚本,而不是编写漂亮的R代码…

还有另一个原因,就是不要对同样是函数名的对象使用名称<代码>数据是一个函数名,因此它“存在”。