如何在R中的调用函数环境中获取对象?

use*_*988 4 environment ls r object

test <- function(){    
a = 3
b = c(1,2,3)
c = matrix(-99, 3, 4)
print(getObjects())
}

getObjects <- function(){
return(ls(pos=1))
}
Run Code Online (Sandbox Code Playgroud)

我希望函数测试仅打印出a,b,c,因为这些是函数test()范围内的唯一对象(在这种情况下,它可以打印测试访问的其他对象/函数,例如getObjects() )。但是pos没有选择给我的吗?有没有一种方法可以在“调用”函数(此处为测试)中获取对象,以便对它进行一些操作,而“被调用”函数(此处为getObjects)可以返回结果。我的函数getObjects应该对通过执行ls()获得的对象进行操作。

Rol*_*and 5

test <- function(){    
  a = 3
  b = c(1,2,3)
  c = matrix(-99, 3, 4)
  print(getObjects())
}

getObjects <- function(){
  return(ls(envir=parent.frame(n = 1)))
}

test()
#[1] "a" "b" "c"
Run Code Online (Sandbox Code Playgroud)

当然,您可以简单地将默认值用于ls

test <- function(){    
  a = 3
  b = c(1,2,3)
  c = matrix(-99, 3, 4)
  ls()
}
Run Code Online (Sandbox Code Playgroud)

从文档中:

名称:列出可用对象时使用的环境。默认为当前环境。