如何在R中的函数之间保存所有使用的变量

如何在R中的函数之间保存所有使用的变量,r,function,global-variables,R,Function,Global Variables,我希望运行函数X并将此函数中使用的所有变量存储到我的环境中,以便直接从控制台或其他脚本访问它们。我知道,不建议使用全局变量,但我需要它来改进代码 例如: executeToy <-function(time){ browser() X = 2+time W = 2 X } 玩具 要从列表中的Toy.R返回所有变量,请执行以下操作: executeToy <-function(time){ X = 2+time W = 2 result <- list(ls()

我希望运行函数X并将此函数中使用的所有变量存储到我的环境中,以便直接从控制台或其他脚本访问它们。我知道,不建议使用全局变量,但我需要它来改进代码

例如:

executeToy <-function(time){
  browser()
  X = 2+time
  W = 2
  X
}
玩具


要从列表中的Toy.R返回所有变量,请执行以下操作:

executeToy <-function(time){
X = 2+time
W = 2
result <- list(ls()) #updated
return(result)
}

executeToy返回函数环境中所有变量的列表:

executeToy <-function(time){
  X = 2+time
  W = 2
  mget(ls())
}

executeToy(1:3)
#$time
#[1] 1 2 3
#
#$W
#[1] 2
#
#$X
#[1] 3 4 5
然后调用函数:

> executeToy(1:3)
Called from: executeToy(1:3)
Browse[1]> time
[1] 1 2 3
Browse[1]> n
debug at #3: X = 2 + time
Browse[2]> n
debug at #4: W = 2
Browse[2]> X
[1] 3 4 5
Browse[2]> n
debug at #5: X
Browse[2]> W
[1] 2
Browse[2]> n
[1] 3 4 5

全局变量不会改进代码。让你的函数返回你想在它们之外使用的所有变量。我如何返回变量?一种可能是返回一个包含所有感兴趣变量的列表。如果你想要一个例子,你需要扩展你的问题。我包括了一个小例子。你能告诉我如何编辑Toy.R到1)返回变量X和2)如何从Toy返回所有变量吗。R@C.Colden查看
帮助(“浏览器”)
。您可能还需要向他们展示如何使用函数。我不确定他们是否知道这是怎么回事。@初学者谢谢你的“return”命令。这适用于一个或几个变量。有没有一种方法可以返回所有变量?如果你运行例如
result,那就太棒了!这与return命令结合使用会有很大帮助!
executeToy <-function(time){
  X = 2+time
  W = 2
  mget(ls())
}

executeToy(1:3)
#$time
#[1] 1 2 3
#
#$W
#[1] 2
#
#$X
#[1] 3 4 5
executeToy <-function(time){
  browser()
  X = 2+time
  W = 2
  X
}
> executeToy(1:3)
Called from: executeToy(1:3)
Browse[1]> time
[1] 1 2 3
Browse[1]> n
debug at #3: X = 2 + time
Browse[2]> n
debug at #4: W = 2
Browse[2]> X
[1] 3 4 5
Browse[2]> n
debug at #5: X
Browse[2]> W
[1] 2
Browse[2]> n
[1] 3 4 5