我想运行函数X并将此函数中使用的所有变量存储到我的环境中,以便我可以直接从控制台或其他脚本访问它们。我知道,不建议使用全局变量,但我需要它来改进代码。
示例:
Toy.R
executeToy <-function(time){
X = 2+time
W = 2
}
ToyCall.R
source('Toy.R')
Y = X+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)
}