我不知道发生了什么事情,但似乎无法将常数添加到向量中。例如,在控制台中键入c(1,2,3,4)+5返回的是15而不是(6,7,8,9)。我做错了什么吗? 谢谢你的帮助。
有人...很可能是你...已经重新定义了“+”函数。这很容易做到:
> `+` <- 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")
对于不匹配的那个文件,使用rm
仍然是最快的解决方法。全局删除是一种会导致大脑清空的操作:
rm(list=ls())
# all user defined objects, including user-defined functions will be removed
在某些情况下,退出并重新启动的建议将无法奏效。如果您使用“保存退出”,则当前的函数定义将被保留。如果您之前曾经从重新定义发生的会话中使用“保存退出”,那么在本次会话中不保存也无法解决问题。以前会话的结果保存在一个名为“.Rdata”的文件中,该文件对Mac和Windows用户都是不可见的,因为操作系统文件查看器(Mac的Finder.app或MS的Windows Explorer)不会显示以“点”开头的文件名。我怀疑Linux用户可以默认看到它们,在终端会话中使用 ls
将显示它们。 (在Mac上很容易找到更改该行为的方法,这也是我运行设备的方式。)在此情况下删除.Rdata文件很有帮助,以及在R会话在启动时崩溃的情况下。
+
,那么你应该在他们的机器上重新定义T <- FALSE
和F <- TRUE
。 - Joshua Ulrichls()
找到它们。删除它们,执行 save.image()
,您的 .Rdata 文件将不再重新加载有问题的项目。 - Carl Witthoft