从R中的向量创建多个环境

时间:2015-07-24 21:17:52

标签: r

我在使用R创建环境时遇到问题。我了解您可以创建像"Mar2015"=new.env()这样的新环境。这样可行。但是出于某种奇怪的原因,我不能从矢量中做到这一点。我创建了这个向量 test=c("Mar2015","Sep2013")test[1]=new.env()不起作用。

我确信这些与我可以使用唯一命令unique(c(test[1],"March2015"))相同并确认它们是相同的。

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

当您运行test[i] = new.env()时,您试图将环境存储在字符串向量中;由于环境不是字符串,因此该代码会导致错误。

您可以使用以下内容从test创建一个命名的环境列表:

envs <- sapply(test, function(x) new.env())

envs <- setNames(replicate(length(test), new.env()), test)

然后,您可以使用envs$Mar2015envs$Sep2013或等效envs[["Mar2015"]]envs[["Sep2013"]]访问您的环境。特别是如果您正在创建大量环境,则命名列表可能是比您环境中的单个变量更好的结构。

如果您真的想要创建具有每个指定名称的变量,可以使用:

for (x in test) assign(x, new.env())