在特定环境中修改对象

Modify objects in a specific environment

假设我有一个包含一些对象的环境:

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 column 将 "z" 命名为 myenv 中的每个 data.frame(x 和 y)。我该怎么做?

我明白我是如何变暗的:

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

但是不知道如何修改myenv中的对象。

可行,但不可行"beatiful"解决方案:

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

此致

你可以试试

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)
 }