R-获取从函数调用创建的所有变量

R-获取从函数调用创建的所有变量,r,R,这太疯狂了,只是出于智力上的好奇:我可以在R中运行一个函数,这样在函数完成后,我就可以在函数执行时获得所有创建的变量吗?那么,在函数返回之前检查函数的能力呢?我不是说在调试模式下输入函数。我不确定这是否是您想要的,但可能会关闭。 您可以通过trace在现有函数中嵌入仲裁表达式: > trace(lm, exit = function().last_env <<- parent.frame()) Tracing function "lm" in package "stats" [

这太疯狂了,只是出于智力上的好奇:我可以在R中运行一个函数,这样在函数完成后,我就可以在函数执行时获得所有创建的变量吗?那么,在函数返回之前检查函数的能力呢?我不是说在调试模式下输入函数。

我不确定这是否是您想要的,但可能会关闭。 您可以通过
trace
在现有函数中嵌入仲裁表达式:

> trace(lm, exit = function().last_env <<- parent.frame())
Tracing function "lm" in package "stats"
[1] "lm"
> lm(y~x, data.frame(x=1:10, y=10:1))
Tracing lm(y ~ x, data.frame(x = 1:10, y = 10:1)) on exit 

Call:
lm(formula = y ~ x, data = data.frame(x = 1:10, y = 10:1))

Coefficients:
(Intercept)            x  
         11           -1  

> ls(.last_env)
 [1] "cl"          "contrasts"   "data"        "formula"     "m"           "method"      "mf"          "model"       "mt"          "na.action"   "offset"     
[12] "qr"          "ret.x"       "ret.y"       "singular.ok" "subset"      "w"           "weights"     "x"           "y"           "z"          
> get("cl", .last_env)
lm(formula = y ~ x, data = data.frame(x = 1:10, y = 10:1))
>跟踪(lm,exit=function().last_env ls(.last_env)
[1] “cl”“对比”“数据”“公式”“m”“方法”“mf”“模型”“mt”“na.操作”“偏移”
[12] qr“ret.x”“ret.y”单数。确定“子集”w“权重”x“y”z
>获取(“cl”,.last_env)
lm(公式=y~x,数据=data.frame(x=1:10,y=10:1))

这就是你要找的东西吗

> fjj <- function() { x <- 3; y <- 4; ls(environment())}
> fjj()
[1] "x" "y"

>fjj要获取所有变量及其值作为列表,可以使用本例中函数的最后一行:

myFunction=function(){
  a="lolcat"
  b=data.frame(firstCol=1:3,secondCol=letters[1:3])
  d=list()
  d[["someName"]]=10:13
  sapply(ls(),function(x)get(x),simplify=F,USE.NAMES=T)
}

myResults=myFunction()

myResults
输出:

$a
[1] "lolcat"

$b
  firstCol secondCol
1        1         a
2        2         b
3        3         c

$d
$d$someName
[1] 10 11 12 13

函数末尾的
ls()
是否不足?您的意思是要在函数内部还是函数外部获取变量列表?我没有函数的源代码,因此无法将ls放入其中。假设我要在一个基本库中的函数上执行此操作。“没有if。只有how。”