我在R会话中做了些蠢事。我写了
print = FALSE
现在我无法打印东西!
打印 [1]错误
我如何取回它?
答案 0 :(得分: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>
答案 1 :(得分:8)
具有讽刺意味的是,你没有覆盖它。您创建了一个名为“print”的数据对象,当您在控制台上键入print
时,eval-print循环接管并返回它。如果您通过键入print("something")
或print(42)
来正确测试打印行为,您会看到解释器仍然能够在基本NAMESPACE中找到print.default
函数。定义与现有函数具有相同名称的数据对象是不好的做法,不是因为它们在R解释器中覆盖,而是因为它们会在用户的脑海中覆盖。解释器通过查看是否存在表示函数调用的开括号来确定您的意图(好吧,它确定它将做什么)。如果字母p-r-i-n-t后跟“(”,那么解释器会查看参数的类并调度相应的打印方法。
答案 2 :(得分:3)
从命名空间中取回
print = base::print