4

私はRセッションで何かばかげたことをしました。私が書いた

印刷=FALSE

今は印刷できません!

印刷[1]FALSE

どうすれば元に戻すことができますか?

4

3 に答える 3

10

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>
于 2012-06-18T13:34:27.090 に答える
8

ここでの皮肉なことに、上書きしなかったということです。「print」という名前のデータオブジェクトを作成printし、コンソールで入力すると、eval-printループが引き継いでそれを返しました。入力して印刷の動作を正しくテストした場合、print("something")またはprint(42)通訳者がまだprint.defaultベースの名前空間で機能します。既存の関数と同じ名前のデータオブジェクトを定義することは、Rインタープリターで上書きされるためではなく、ユーザーの心の中で上書きされるため、悪い習慣です。インタプリタは、関数呼び出しを意味する開き括弧があるかどうかを確認することによって、あなたの意図を決定します(まあ、それはとにかく何をするかを決定します)。文字printの後に「(」が続く場合、インタープリターは引数のクラスを調べて、適切なprintメソッドをディスパッチします。

于 2012-06-18T13:43:00.830 に答える
3

名前空間から戻す

print = base::print
于 2012-06-18T13:33:58.867 に答える