R 如何在函数中使用ls()搜索环境?
我想找到一组函数并保存它们,因为我想将它们以Rdata文件的形式发送到远程服务器,而不想在服务器上安装新的包 虽然我使用下面的方法时遇到了错误,但欢迎使用更简单/更好的方法 MWE: 以下是两个虚拟函数:R 如何在函数中使用ls()搜索环境?,r,environment,R,Environment,我想找到一组函数并保存它们,因为我想将它们以Rdata文件的形式发送到远程服务器,而不想在服务器上安装新的包 虽然我使用下面的方法时遇到了错误,但欢迎使用更简单/更好的方法 MWE: 以下是两个虚拟函数: abcd.fun.1 <- function() return(1) abcd.fun.2 <- function() return(2) ls()[grep('abcd', ls())] 但当我将其包装到函数中时: find.test <- functio
abcd.fun.1 <- function() return(1)
abcd.fun.2 <- function() return(2)
ls()[grep('abcd', ls())]
但当我将其包装到函数中时:
find.test <- function(x) {
return(ls()[grep(x, ls())])
}
find.test('abcd')
模式=
参数用于ls
ls
会列出函数中存在的对象
功能范围,而不是全局环境(这在?ls
中解释)envir=.GlobalEnv
x <- 1:10
f <- function() ls()
g <- function() ls(envir=.GlobalEnv)
h <- function() ls(envir=.GlobalEnv, pattern="[fg]")
f()
# character(0)
g()
# [1] "f" "g" "h" "x"
h()
# [1] "f" "g"
x您需要告诉您的函数列出自身以外环境中的对象,例如全局环境。(同时,您还可以将regex模式指定为ls
的参数):
find.test globalenv()是首选days@hadley:你能解释一下原因吗?嗯,我可以发誓它在文档中暗示了这一点,但我想不是。在这种情况下,这只是个人观点:我认为使用函数比使用全局函数更好。
x <- 1:10
f <- function() ls()
g <- function() ls(envir=.GlobalEnv)
h <- function() ls(envir=.GlobalEnv, pattern="[fg]")
f()
# character(0)
g()
# [1] "f" "g" "h" "x"
h()
# [1] "f" "g"
find.test <- function(x, envir=.GlobalEnv) {
ls(pattern=x, envir=envir)
}