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

我在R中创建环境时遇到了问题.我知道你可以创建一个像“Mar2015”= new.env()这样的新环境.这样可行.但是出于某种奇怪的原因,我不能从矢量中做到这一点.我创建了这个向量

test = c(“Mar2015”,“Sep2013”​​)和test [1] = new.env()不起作用.

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

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

最佳答案 当你运行test [i] = new.env()时,你试图将一个环境存储在一个字符串向量中;由于环境不是字符串,因此此代码将导致错误.

您可以使用以下命令从test创建命名的环境列表:

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

要么

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

然后你可以使用envs $Mar2015和envs $Sep2013访问你的环境或者相当于envs [[“Mar2015”]]和envs [[“Sep2013”​​]].特别是如果您正在创建大量环境,则命名列表可能是比您的环境的单个变量更好的结构.

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

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