如何解决R中是否有类似环境的打印方法?
AnEnv <- new.env()
AnEnv$mod <- function(a,b) a%%b
AnEnv$pwr <- function(a,b) a^b
每当我在 R 控制台中输入 AnEnv
时,它都会返回类似 <environment: 0x7f7f6fe3d4f0>
的内容。有没有可以改变这种行为的原因。例如,当我输入 AnEnv
时,它会返回来自 ls(env = AnEnv)
或 ls.str(env = AnEnv)
的结果。
解决方法
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"
,
也许你想要这样的东西:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。