【问题标题】:What does "Error: object '<myvariable>' not found" mean?“错误:找不到对象'<myvariable>'”是什么意思?
【发布时间】:2015-03-09 07:48:07
【问题描述】:

我收到错误消息:

错误:找不到对象“x”

或者像

这样更复杂的版本

均值(x) 中的误差: 在为函数“mean”选择方法时评估参数“x”时出错:错误:找不到对象“x”

这是什么意思?

【问题讨论】:

    标签: r r-faq


    【解决方案1】:

    我在使用 R-studio 时遇到了类似的问题。当我试图做我的情节时,这个消息出现了。

    最终我意识到这背后的原因是我的地块的“窗口”太小了,我不得不把它弄大以“适应”里面的所有地块!

    希望能帮到你

    【讨论】:

    • 这没有意义
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      除了解释它的含义之外,让我们讨论一下为什么会在 R 中抛出“找不到对象”错误。它的含义(对许多人来说)是显而易见的:至少根据 R 解释器,所讨论的变量尚未定义,但如果您在代码中看到您的对象,可能有多种原因导致这种情况发生:

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

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

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

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

      上面的 sn-p 是从 R markdown 单元格的开头。如果 eval 和 echo 都设置为 False,这可能会在您尝试编织文档时触发错误。澄清。我有一个用例,我将这些标志保留为 False,因为我认为我不希望我的代码回显或其结果显示在我生成的降价 HTML 中。但是由于该变量随后在以后的单元格中使用,因此在编织过程中导致了错误。使用 T/F TRUE/FALSE 标志的简单试验和错误可以确定这是否是您在从 RStudio 编织 R markdown 文档时发生错误的根源。

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

      • rm() 删除变量
      • 点击 RStudio 环境窗口中的扫帚图标会清除当前工作环境中的所有内容
      • ls() 可以帮助您查看当前处于活动状态的内容以查找缺失的声明。
      • exists("x") - 正如另一张海报所提到的,它可以帮助您在具有非常长的活动变量列表的环境中测试特定值

      【讨论】:

        【解决方案4】:

        错误意味着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 更靠后。


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

        【讨论】:

        • 我尝试使用 exists("x"),但如果 x 为 NULL,则会引发错误:Error in exists(x) : invalid first argument。 is.null(x) 可以对此进行测试,但如果未找到 x,则该测试会引发错误:Error: object 'x' not found。第 22 条?
        • @R.Schreurs x &lt;- NULL; exists("x") 返回TRUE。我认为你有一个不同的问题。
        • 你是对的。我现在假设我没有在通话中引用 xexists(x) 应该是 exists("x")
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        相关资源
        最近更新 更多