Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在函数中使用ls()搜索环境?_R_Environment - Fatal编程技术网

R 如何在函数中使用ls()搜索环境?

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

我想找到一组函数并保存它们,因为我想将它们以Rdata文件的形式发送到远程服务器,而不想在服务器上安装新的包

虽然我使用下面的方法时遇到了错误,但欢迎使用更简单/更好的方法

MWE:

以下是两个虚拟函数:

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) 
    }