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

getObjects <- function(){ 
return(ls(pos=1)) 
} 

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

+1

'get(pos = parent.frame(1))'在getObjects中。 –

+0

谢谢洪!欣赏它。 – user1971988

回答

2
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" 

当然,你可以简单地使用默认值ls

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

从文档:

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

+0

谢谢!我想在内存中跟踪像测试这样的函数内的对象。因此,需要一个独立的函数来执行ls()并根据“调用者”函数中的对象的大小发送警报/发送警报。 – user1971988

相关问题