2016-09-21 3 views
10

私は最初に実行したときにのみエラーを生成するコードがあります。不思議なことに、私が2回目にそれを実行すると、エラーは発生しません(クレイジー定義?)。また、エラーは常に同じ位置に表示されません、私はコメントの数行を追加すると、エラーメッセージがコメントの後に印刷され、特定の指示の後ではないことを意味します。Rエラー:非ベクトルにnames()を適用しました

正確なエラーの原因がわからないため、再現可能な例はありません。エラーは以下の通りです:

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

私は私のコードでは、私は少なくとも-at names()機能をexplicitly-持っていないことを指定する必要があります。

+0

コードを1行ずつ実行して、エラーを示す行を確認してください。 – niczky12

+0

私は常にデバッグのために行単位で実行しますが、問題はエラーがいつ現れるかわからないことです。私はもう一度やり直します。 – Manfredo

+1

オプションで実行しようとすると(エラー=回復);エラーが発生したときにデバッガに入ります。コード内のどこに何が起こっているのかを調べることができます。デバッガコマンドのヘルプ(ブラウザ)を参照してください。 "names()"への呼び出しはおそらくあなたが呼び出したライブラリ/パッケージの一部です。 –

答えて

17

これはトリッキーなエラーです。私はその理由を追跡することができたし、Rにはキャッシュされた関数と同じ名前のオブジェクトがあるようだ。これは、View(df)のタブであるRStudioなどのIDEを使用している場合に発生します。コードなしで関数を実行してもタブが閉じない限り、このエラーが発生します。同様に、タブが閉じていない場合でも、すべてのオブジェクトを削除したり、ガベージコレクションを行ったりしても問題は解決しません。タブが閉じられると、エラーはなくなります。

+0

これを確認できます。"マージ"と呼ばれるオブジェクトを作成して同じオブジェクトを削除しようとすると、エラーが発生します(少なくともdata.tableがロードされていても、おそらくベースマージでさえこれにつながるでしょう)。その名前の関数が存在する可能性が高いためです。 –

1

私は同じエラーがありました。私が書いた特定の機能については誤りでした。関数のすべてのコードをコメントアウトしても、関数をロードするたびにエラーがスローされていました。私は私の関数の変数名を変更すると、エラーを停止したことがわかりました。私の唯一の推測では、変わった変数名の競合があるということです。

+0

mmm私はそれを見てみましょう。今私はエラーがスローされた場所から覚えていないが、私は再びポップアップする気がする。とにかく感謝の投稿を更新しようとします:) – Manfredo

+0

私はこの問題を昨日持っていて、この記事を見つけました。それは確かに奇妙なエラーです。幸いにも、私はその周りに道を見いだすことができましたが、私は奇妙な命名の競合で何が起こっていたのか分かりません。 – JMT2080AD

-5

ただ、これは動作します

as.vector(dataframe) 

を追加します。

+2

いいえ、そうではありません。プラスdfをベクトルに変換することは、私が思うにはほとんど望んでいないことです。 – Manfredo

0

私は同じエラーがありました。その理由は、dfとも呼ばれる現在の変数を妨害している "df"という名前で、以前保存したファイルに関連するものです。

解決策は難しいです:問題のある行を見つけるには、コードの最初の行を実行してから、グローバル環境をクリアしてもう一度実行します。エラーが発生しない場合は、エラーが発生するまで次の行を追加します。次に、その行の変数の名前を変更します。

0

同じエラーがありました。私の場合の理由は、関数内に関数と同じ名前の別のデータフレームがあったからです。私は同様に型の不一致があるときにRがこのエラーをスローすると思います。私の場合、名前は最初に関数として読み込まれました。 Rが同じ名前に再び遭遇したとき、それは関数を探していたが代わりにデータフレームを見つけた。

私がしなければならなかったのは、そのうちの1人の名前を変更することでした。エラーはなくなりました。

関連する問題