不能在R中向向量添加常量

时间:2012-08-18 15:07:37

标签: r vector constants

我不知道发生了什么,但我似乎无法在向量中添加常量。例如,在控制台c(1,2,3,4)+5中键入会返回15而不是(6,7,8,9)。我究竟做错了什么? 谢谢你的帮助。

1 个答案:

答案 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会话在启动时崩溃的情况。