什么是“错误:对象'<myvariable>'未找到”是什么意思?</myvariable>

时间:2015-01-11 12:06:45

标签: r r-faq

我收到了错误消息:

  

错误:对象&#39; x&#39;找不到

或更复杂的版本,如

  

平均值(x)出错:         评估论证的错误&#39; x&#39;选择功能方法&#39;意思是&#39;:错误:对象&#39; x&#39;找不到

这是什么意思?

4 个答案:

答案 0 :(得分:26)

错误意味着R无法找到错误消息中提到的变量。

重现错误的最简单方法是键入不存在的变量的名称。 (如果您已经定义了x,请使用其他变量名称。)

x
## Error: object 'x' not found

更复杂的错误版本具有相同的原因:在x不存在时调用函数。

mean(x)
## Error in mean(x) : 
##   error in evaluating the argument 'x' in selecting a method for function 'mean': Error: object 'x' not found

一旦定义了变量,就不会发生错误。

x <- 1:5
x
## [1] 1 2 3 4 5     
mean(x)
## [1] 3

您可以使用lsexists检查变量是否存在。

ls()        # lists all the variables that have been defined
exists("x") # returns TRUE or FALSE, depending upon whether x has been defined.

使用非标准评估时可能会发生这样的错误。例如,使用subset时,如果数据框中的列名不存在于子集中,则会发生错误。

d <- data.frame(a = rnorm(5))
subset(d, b > 0)
## Error in eval(expr, envir, enclos) : object 'b' not found

如果使用自定义评估,也会发生错误。

get("var", "package:stats") #returns the var function
get("var", "package:utils")
## Error in get("var", "package:utils") : object 'var' not found

在第二种情况下,当R查看utils包的环境时,找不到var函数,因为utilssearch列表低stats }}。


在更高级的用例中,您可能希望阅读:

答案 1 :(得分:3)

让我们讨论一下未找到&#34;对象的原因&#34;除了解释它的含义之外,还可以在R中抛出错误。它对许多人来说意味着什么是显而易见的:至少根据R解释器,有问题的变量尚未定义,但如果你在代码中看到你的对象,可能有多种原因导致这种情况发生:< / p>

  1. 检查声明的语法。如果您在以后的调用语句中输错了一个字母或使用大写而不是小写,那么它就不会与原始声明匹配,并且会发生此错误。

  2. 您是否在笔记本或降价文档中收到此错误?在运行调用变量的当前单元格之前,您可能只需要重新运行具有声明的早期单元格。

  3. 您是否正在尝试编织R文档,并且在运行单元格时变量可以找到,但在编织单元格时却找不到?如果是这样 - 那么你想检查我在下面提供的片段,以找出触发此错误的可能副作用:

    {r sourceDataProb1, echo=F, eval=F} # some code here

  4. 以上片段来自R markdown单元格的开头。如果eval和echo都设置为False,则在尝试编织文档时会触发错误。澄清。我有一个用例,我将这些标志保留为False,因为我认为我不希望我的代码回显或其结果显示在我生成的markdown HTML中。但由于变量随后用于后期细胞,因此在编织过程中会出现错误。 T / F TRUE / FALSE标志的简单试错可以确定在从RStudio编织R降价文档时是否出现错误的来源。

    最后:在声明变量后,您是删除变量还是从内存中清除它?

    • rm()删除变量
    • 点击RStudio环境窗口中的扫帚图标,清除当前工作环境中的所有内容
    • ls()可以帮助您查看现在正在查找缺失声明的内容。
    • 存在(&#34; x&#34;) - 如另一张海报所述,可以帮助您在具有非常冗长的活动变量列表的环境中测试特定值

答案 2 :(得分:3)

在R中执行多行代码时,您需要首先选择所有代码行,然后单击“运行”。 当我们不选择语句并单击“运行”时,通常会出现此错误。

答案 3 :(得分:1)

我对R-studio有类似的问题。当我尝试进行绘图时,此消息正在显示。

最终,我意识到背后的原因是我对地块的“窗口”太小了,我不得不加大它才能“适合”所有地块!

希望能提供帮助