R错误:应用于非向量的names()

时间:2016-09-21 09:00:05

标签: r runtime-error names

我有一大块代码只在我第一次运行时产生错误。奇怪的是,如果我第二次运行它我没有错误(疯狂定义?)。此外,错误不会始终显示在同一位置,我的意思是,如果我添加几行注释,则会在注释后打印错误消息,而不是在特定指令之后打印。

我无法提供可重现的示例,因为我不知道错误的确切位置。错误如下:

Error in names(frame)[names(frame) == "x"] <- name : 
  names() applied to a non-vector

我应该在我的代码中指定我没有 - 至少明确地 - names()函数。

6 个答案:

答案 0 :(得分:38)

这是一个棘手的错误。我能够找到原因,似乎R有一个与缓存函数同名的对象。如果使用诸如RStudio之类的IDE(View(df)的选项卡),则最有可能。除非关闭选项卡,否则即使运行没有代码的函数也会出现此错误。同样,如果选项卡未关闭,甚至不删除所有对象或进行垃圾收集也将解决它。选项卡关闭后,错误将消失。

答案 1 :(得分:2)

我遇到了同样的错误,这是我写的一个特定功能的错误。每当我加载函数时都会抛出错误,即使我在函数中注释掉了所有代码。我发现更改函数的变量名称会停止错误。我唯一的猜测是有一些奇怪的变量名称冲突。

答案 2 :(得分:0)

我有同样的错误。它的原因是与我很久以前保存的名为“df”的文件有关,这个文件干扰了当前变量,也称为df。

然而,解决方案很简单:通过运行代码的第一行,然后清除全局环境并再次运行,找到有问题的行。如果没有发生错误,请添加下一行,依此类推,直到发生错误。然后,更改该行中变量的名称。

答案 3 :(得分:0)

即使我有同样的错误。在我的情况下,原因是有另一个数据框与函数内的函数同名。我猜R在类型不匹配时会抛出此错误。在我的情况下,名称首先被读作一个函数。当R再次遇到相同的名称时,它会寻找一个函数,但却找到了一个数据框。

我所要做的只是更改其中一个的名称,错误就消失了。

答案 4 :(得分:0)

每次尝试通过remove(list = ls())删除所有内容时,此错误也会出现在我的代码中。就我而言,问题是我有一个名为df (datatype = data.frame)的对象,并且还打开了View的早期版本的df。关闭View后,错误消失了。

答案 5 :(得分:-5)

添加

 as.vector(dataframe)

这很有效。