私はRセッションで何かばかげたことをしました。私が書いた
印刷=FALSE
今は印刷できません!
印刷[1]FALSE
どうすれば元に戻すことができますか?
rm
基本オブジェクトは削除されないため、次を実行できます。
rm(print)
興味深いことに、次のものを印刷できます。
> print <- FALSE
> print
[1] FALSE
> print("hi")
[1] "hi"
> rm(print)
> print("hi")
[1] "hi"
> print
function (x, ...)
UseMethod("print")
<bytecode: 0x2a3a148>
<environment: namespace:base>
ここでの皮肉なことに、上書きしなかったということです。「print」という名前のデータオブジェクトを作成print
し、コンソールで入力すると、eval-printループが引き継いでそれを返しました。入力して印刷の動作を正しくテストした場合、print("something")
またはprint(42)
通訳者がまだprint.default
ベースの名前空間で機能します。既存の関数と同じ名前のデータオブジェクトを定義することは、Rインタープリターで上書きされるためではなく、ユーザーの心の中で上書きされるため、悪い習慣です。インタプリタは、関数呼び出しを意味する開き括弧があるかどうかを確認することによって、あなたの意図を決定します(まあ、それはとにかく何をするかを決定します)。文字printの後に「(」が続く場合、インタープリターは引数のクラスを調べて、適切なprintメソッドをディスパッチします。
名前空間から戻す
print = base::print