【问题标题】:How to use assign inside a function when NOT assigning to the .GlobalEnv?不分配给.GlobalEnv时如何在函数内使用分配?
【发布时间】:2013-09-25 20:19:10
【问题描述】:

换一种说法:如何获取函数环境的名称(而不是其封闭环境)。

我正在尝试将函数的结果分配给函数内的某个名称。该名称不应出现在 GlobalEnv 中。我仍然关心这个名字,因为我处理deparse(substitute(x)),因此需要理解这个名字。

目前我只是在函数内部创建一个环境,我觉得这是一种解决方法:

createList <- function(...,nm="nameString"){
myList <- list(...)
e1 <- new.env()
assign(nm,myList,envir=e1)
# obviously this does not make much sense
# just want to show that the envir thing works
e1[[nm]]
}

有什么方法可以更轻松地做到这一点吗?不是结果,而是将变量分配给某个名称 在一个函数里面。 environment(createList) 只是给我回了.GlobalEnv,函数本身所在的环境,但我想知道函数内部的变量所在的环境是如何调用的。.Private?

【问题讨论】:

  • "Is there any way to do this easier?" -- 最终目标是什么?
  • 第二个@RicardoSaporta,我怀疑其他人也会加入。
  • 最终目标实际上是如何找到命名函数私有环境的哈希。不知道 environment() 没有参数。

标签: r private environment


【解决方案1】:

environment()是你想要的吗?

createList <- function(...,nm="nameString"){
  myList <- list(...)
  assign(nm,myList,envir=environment())
  get(nm)
}

【讨论】:

  • 抱歉我的问题不准确。在不知道我现在知道什么的情况下,很难问想知道什么。不管怎样,只是很擅长猜测!我将编辑问题以帮助未来的谷歌员工。
猜你喜欢
  • 2015-05-05
  • 2012-04-01
  • 2019-12-14
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多