我有两个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)
}
但我不想让脚本1中的函数从脚本2中调用。我该怎么做?
我知道我可以在脚本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)
}
我知道创建新环境,但我不确定这会有所帮助。
答案 0 :(得分:1)
您可以使用?environment
来实现此目的。另请参阅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
基本上,每一个skript都将在自己的环境中运行。 这是你想要实现的目标吗?
答案 1 :(得分:1)
在每个脚本的末尾只删除其中定义的函数。