有人......可能是你......重新定义了“+”功能。这很容易做到:
> `+` <- 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
)提示我添加有关如何检查并从替代可能性中恢复的信息。您可以使用两种方法来确定表达式中的两个函数中的哪一个c(1,2,3,4) + 5
是罪魁祸首。人们可以输入他们的名字(用反引号括起来)+
),并注意您是否得到了正确的定义:
> `+`
function (e1, e2) .Primitive("+")
> c
function (..., recursive = FALSE) .Primitive("c")
Using rm
罪魁祸首(与上面不匹配的)仍然是最快的解决方案。使用全局 rm 是一种会话中的 Brainwipe:
rm(list=ls())
# all user defined objects, including user-defined functions will be removed
在某些情况下,退出并重新启动的建议不起作用。如果您退出并保存,当前的函数定义将被保留。如果您之前从发生重新定义的会话中退出并保存,那么不在该会话中保存也不会解决问题。先前会话的结果保存在名为“.Rdata”的文件中,该文件对于 Mac 和 Windows 用户都是不可见的,因为操作系统文件查看器(Mac 的 Finder.app 或 MS 的 Windows 资源管理器)不会显示以“开头的文件名”点”。我怀疑 Linux 用户默认会看到它们,因为使用ls
在终端会话中将显示它们。 (在 Mac 中很容易找到更改该行为的方法,这就是我运行设备的方式。)在这种情况下以及 R 会话在启动时崩溃的情况下,删除 .Rdata 文件很有帮助。