2013-08-27 25 views
0

为什么下面的自定义对象不起作用?创建使用正则表达式的自定义对象函数(在R中)

objects0 <- function(find_term) 
{ 
    objects(pattern=glob2rx(paste0("*",find_term,"*"))) 
} 
txt1 <- 100 
tt <- 200 
> objects0('txt') 
character(0) 

但是,当我写

objects(pattern=glob2rx(paste0("*",'txt',"*"))) 

它工作得很好。

+0

它不起作用,因为'txt1'不存在于函数的环境中,其中'objects'正在搜索。 –

+0

它不应该仅仅通过检查来搜索'.GlobalEnv'或父级环境吗? –

+1

这似乎不是一个合理的默认值。搜索_current_环境并不是一个令人惊讶的默认设置。 –

回答

3

您需要指定查找对象的环境。

添加参数envir=parent.frame()objects电话:

objects0 <- function(find_term)objects(pattern=glob2rx(paste0("*",find_term,"*")), envir=parent.frame()) 

也许更好的方法是添加envir=globalenv(),以保证搜索是在全球环境一直在做。