簡體   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