1

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

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

每当我输入AnEnvR-console 时,它​​都会返回类似<environment: 0x7f7f6fe3d4f0>. 有没有为什么可以改变这种行为。例如,当我键入时,它会从or中AnEnv返回结果。ls(env = AnEnv)ls.str(env = AnEnv)

4

2 回答 2

4

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

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"
于 2021-02-02T20:29:10.877 回答
3

也许你想要这样的东西:

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
于 2021-02-02T19:53:48.927 回答