修改特定环境中的对象

时间:2015-01-07 13:58:03

标签: r environment assign

假设我有一些带有某些对象的环境:

myenv=new.env()

x=data.frame(a=c(1:5),b=c(2:6))
y=data.frame(c=c(3:7),d=c(4:8))

assign("x",x,env=myenv)
assign("y",y,env=myenv)


ls(env=myenv)  
[1] "x"     "y"

然后,我想add a columnmyenv中的每个data.frame(x和y)命名为“z”。我怎么能这样做?

我理解我如何能得到例如昏暗的东西:

sapply(mget(ls(env=myenv), myenv),dim) ###this way
sapply(ls(env=myenv),function(x) dim(get(x,myenv))) ##or this way

但无法弄清楚如何修改myenv中的对象。

这有效,但不是那么“美丽”的解决方案:

sapply(ls(env=myenv),function(x) {
  trying=get(x,myenv)
  trying[,"z"]=trying[,2]+trying[,3]
  return(trying)
}) 

最好的问候

1 个答案:

答案 0 :(得分:2)

你可以尝试

assign('x', '[[<-'(x, 'c', value=NA), envir=myenv)

这可以在多个对象的for循环中完成

v1 <- ls(env=myenv) 
for(i in v1){
   assign(i, `[[<-`(get(i), 'c', value=NA), envir=myenv)
 }