我在使用R创建环境时遇到问题。我了解您可以创建像"Mar2015"=new.env()
这样的新环境。这样可行。但是出于某种奇怪的原因,我不能从矢量中做到这一点。我创建了这个向量
test=c("Mar2015","Sep2013")
和test[1]=new.env()
不起作用。
我确信这些与我可以使用唯一命令unique(c(test[1],"March2015"))
相同并确认它们是相同的。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:2)
当您运行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())