2

何が起こっているのかわかりませんが、ベクトルに定数を追加できないようです。たとえば、コンソールにc(1,2,3,4)+5と入力すると、(6,7,8,9)ではなく15が返されます。私は何が間違っているのですか?ご協力ありがとうございました。

4

1 に答える 1

14

誰か....おそらくあなたは...「+」関数を再定義しました。それは簡単です:

> `+` <- function(x,y) sum(x,y)
> c(1,2,3,4)+5
[1] 15

修正は簡単です。使用するだけrm()です:

> rm(`+`)
> c(1,2,3,4)+5
[1] 6 7 8 9

編集: コメント (c代わりに として再定義された代替の可能性を提起したsum) は、代替の可能性を調べて回復する方法に関する情報を追加するように促しています。2 つの方法を使用して、式内の 2 つの関数のどちらがc(1,2,3,4) + 5原因であるかを判断できます。それらの名前を (バッククォートで囲んで+) 入力し、適切な定義が得られたかどうかを確認することができます。

> `+`
function (e1, e2)  .Primitive("+")
> c
function (..., recursive = FALSE)  .Primitive("c")

rm犯人 (上記と一致しない on)を使用することが、依然として最も迅速な解決策です。グローバル rm の使用は、セッション中のブレインワイプです。

rm(list=ls())  
# all user defined objects, including user-defined functions will be removed

終了して再起動するというアドバイスは、状況によっては機能しない場合があります。保存して終了すると、現在の関数定義が保持されます。再定義が発生したセッションから以前に quit-with-save を使用していた場合、このセッションで保存しなくても問題は修正されません。以前のセッションの結果は「.Rdata」という名前のファイルに保持されます。このファイルは、OS ファイル ビューアー (Mac の Finder.app または MS の Windows エクスプローラー) が「」で始まるファイル名を表示しないため、Mac ユーザーと Windows ユーザーの両方には表示されません。ドット」を使用して以来、Linuxユーザーはデフォルトでそれらを見ることができると思いますlsターミナルセッションでそれらを表示します。(Mac でその動作を変更する方法を見つけるのは簡単で、それが私のデバイスの実行方法です。) .Rdata ファイルを削除すると、この場合だけでなく、起動時に R セッションがクラッシュする状況でも役立ちます。

于 2012-08-18T15:13:01.830 に答える