如何从R脚本中删除函数?

时间:2015-02-14 09:52:31

标签: r

我创建了一个不带参数的函数mean()。实际上我想计算一些数字的平均值:

mean <- function() {
    ozonev <- data[1]
    mv <- is.na(ozonev)
    mean(ozonev)
}

由于R中存在预定义函数mean(),因此该代码将进入递归。此外,我试图重命名主要功能,但以前的意思仍然存在。任何机构都可以帮我解决如何删除我所做的那种功能,以便恢复mean()的实际功能。

> source("solution.R")

> ls()

 [1] "colname" "data"    "firtr"   "fsr"     "last"    "mean"    "meano"  
 [8] "missv"   "rowno"   "x"       "y" 

solution.R是脚本,意思是函数。 meano是重命名的函数。

3 个答案:

答案 0 :(得分:4)

您应该使用rm删除mean功能。

rm(mean)
# or, if you have an environment for this
rm(mean, envir = "<your_env>")

但是您无法从mean包中删除base。它已被锁定以进行修改。

答案 1 :(得分:2)

有一种避免递归的简单方法:明确调用base::mean

mean <- function() {
    ozonev <- data[1]
    mv <- is.na(ozonev)
    base::mean(ozonev)
}

或者,您可以这样做:

old_mean <- mean
mean <- function() {
    ozonev <- data[1]
    mv <- is.na(ozonev)
    old_mean(ozonev)
}

这样做的好处是,它会调用以前可能覆盖mean的任何预先存在的base::mean函数。但是,更简洁的方法通常是make a function into an S3 generic,并为某个类创建通用。

您可以通过键入命令

来编辑R脚本内部或交互式R会话内的功能
man <- edit(main)

(请注意,您需要重新分配edit的结果,就像我在这里完成的那样!)

答案 2 :(得分:1)

试试这个。

mean <- NULL

(我不知道为什么会这样。但是这很有效。)