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

时间:2014-05-05 14:00:55

标签: r function global-variables

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

示例:

Toy.R

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

ToyCall.R

source('Toy.R')
Y = X+2

2 个答案:

答案 0 :(得分:2)

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

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

但是,根据您的评论,我认为browser函数(通过表达式,即通常用于调试)会对您更有用。

示例:

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

答案 1 :(得分:1)

要从列表中的Toy.R返回所有变量:

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

如果您只想返回X:

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