我创建了一个不带参数的函数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
是重命名的函数。
答案 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
(我不知道为什么会这样。但是这很有效。)