防止函数相互调用
Preventing functions to call each other
我有这两个 R 脚本,它们将来自同一个 R 实例。
脚本 1:
fun1 <- function(x, y)
{
ret = x+y+mean(x,y)
return(ret)
}
fun2 <- function(x, y, z)
{
k = fun1(x, y)
print(x+y+k)
}
我希望脚本 2 是这样的
fun3 <- function(k, l)
{
k = fun4(k, l)
m = k / sd(k,l)
return(m)
}
fun4 <- function(k, l)
{
ret = k+l+mean(k,l)
return(ret)
}
但是人们写的是
fun3 <- function(k, l)
{
k = fun1(k, l)
m = k / sd(k,l)
return(m)
}
但我不想让脚本 2 调用脚本 1 中的函数。我该怎么做?
我知道我可以在脚本 1 中执行此操作,但是有很多函数,例如 fun2,其中一些函数很大,所以这对我来说是不可能的
fun2 <- function(x, y, z)
{
fun1 <- function(x, y)
{
ret = x+y+mean(x,y)
return(ret)
}
k = fun1(x, y)
print(x+y+k)
}
我知道创建新环境,但不确定是否有帮助。
您可以为此使用 ?environment
s。另见 another similar question
env1 <- new.env()
env2 <- new.env()
assign("myfun", value = function(x) {
mean(x)
}, envir = env1)
assign("myfun", value = function(x) {
mean(x^2)
}, envir = env2)
myx <- 1:10
with(env1, myfun(myx)) # 5.5
with(env2, myfun(myx)) # 38.5
基本上,每个脚本都会 运行 在其自己的环境中。
这是你想要达到的目标吗?
在每个脚本的最后删除其中定义的函数。
我有这两个 R 脚本,它们将来自同一个 R 实例。
脚本 1:
fun1 <- function(x, y)
{
ret = x+y+mean(x,y)
return(ret)
}
fun2 <- function(x, y, z)
{
k = fun1(x, y)
print(x+y+k)
}
我希望脚本 2 是这样的
fun3 <- function(k, l)
{
k = fun4(k, l)
m = k / sd(k,l)
return(m)
}
fun4 <- function(k, l)
{
ret = k+l+mean(k,l)
return(ret)
}
但是人们写的是
fun3 <- function(k, l)
{
k = fun1(k, l)
m = k / sd(k,l)
return(m)
}
但我不想让脚本 2 调用脚本 1 中的函数。我该怎么做?
我知道我可以在脚本 1 中执行此操作,但是有很多函数,例如 fun2,其中一些函数很大,所以这对我来说是不可能的
fun2 <- function(x, y, z)
{
fun1 <- function(x, y)
{
ret = x+y+mean(x,y)
return(ret)
}
k = fun1(x, y)
print(x+y+k)
}
我知道创建新环境,但不确定是否有帮助。
您可以为此使用 ?environment
s。另见 another similar question
env1 <- new.env()
env2 <- new.env()
assign("myfun", value = function(x) {
mean(x)
}, envir = env1)
assign("myfun", value = function(x) {
mean(x^2)
}, envir = env2)
myx <- 1:10
with(env1, myfun(myx)) # 5.5
with(env2, myfun(myx)) # 38.5
基本上,每个脚本都会 运行 在其自己的环境中。 这是你想要达到的目标吗?
在每个脚本的最后删除其中定义的函数。