我不知道发生了什么,但我似乎无法在向量中添加常量。例如,在控制台c(1,2,3,4)+5中键入会返回15而不是(6,7,8,9)。我究竟做错了什么? 谢谢你的帮助。
答案 0 :(得分:14)
有人....可能你......重新定义了“+”功能。这很容易做到:
> `+` <- 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是会话中的脑力消耗:
rm(list=ls())
# all user defined objects, including user-defined functions will be removed
退出和重启的建议在某些情况下不起作用。如果退出并保存,将保留当前的函数定义。如果您之前已从发生重新定义的会话中退出并保存,则不保存此会话也不会解决问题。先前会话的结果保存在名为“.Rdata”的文件中,并且该文件对于Mac和Windows用户都是不可见的,因为OS文件查看器(Mac的Finder.app或MS的Windows资源管理器)将不会显示以“ “我怀疑Linux用户默认会看到它们,因为在终端会话中使用ls
会显示它们。(很容易找到在Mac中改变这种行为的方法,这就是我运行的方式我的设备。)删除.Rdata文件在这个实例中很有用,以及R会话在启动时崩溃的情况。