【问题标题】:Is there something like print method for environment in R?R中是否有类似环境打印方法的东西?
【发布时间】:2021-05-07 00:57:07
【问题描述】:

我用两个简单的函数在 R 中创建了一个简单的环境,

AnEnv <- new.env()
AnEnv$mod <- function(a, b) a%%b
AnEnv$pwr <- function(a, b) a^b

每当我在 R-console 中键入 AnEnv 时,它都会返回类似 &lt;environment: 0x7f7f6fe3d4f0&gt; 的内容。有没有为什么可以改变这种行为。例如,当我输入AnEnv 时,它会返回来自ls(env = AnEnv)ls.str(env = AnEnv) 的结果。

【问题讨论】:

    标签: r r-environment


    【解决方案1】:

    R 已经有 ls(e)、ls(e, all = TRUE)、as.list(e) 和 str(as.list(e)) 将显示对象名称(以点开头的除外) ,所有对象名称,环境 e 的全部内容和内容摘要,因此不清楚 this 有什么用处;但是,我们可以为环境添加一个名称,然后它就会显示出来。

    e <- new.env()
    attr(e, "name") <- "my env"
    
    e
    ## <environment: 0x000000001532f8b0>
    ## attr(,"name")
    ## [1] "my env"
    

    或使用environmentName:

    environmentName(e)
    ## [1] "my env"
    

    在某些情况下,环境已经具有名称和/或其他属性。

    baseenv()
    ## <environment: base>
    
    globalenv()
    ## <environment: R_GlobalEnv>
    
    as.environment("package:graphics")
    ## <environment: package:graphics>
    ## attr(,"name")
    ## [1] "package:graphics"
    ## attr(,"path")
    ## [1] "C:/Program Files/R/R-4.1/library/graphics"
    

    【讨论】:

      【解决方案2】:

      也许你想要这样的东西:

      print.environment = function(x) {
        for (obj in ls(envir=x)) {
          cat(paste0(obj, ": "))
          print(get(obj, envir=x))
        }
      }
      print (AnEnv)
      # mod: function(a, b) a%%b
      # pwr: function(a, b) a^b
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2021-09-29
        • 2016-10-17
        • 1970-01-01
        相关资源
        最近更新 更多