繁体   English   中英

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

[英]R Error: names() applied to a non-vector

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

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

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

我应该在我的代码中指定我没有 - 至少显式 - 一个names()函数。

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

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

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

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

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

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

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

只需添加

 as.vector(dataframe)

这有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM