假设我有一些带有某些对象的环境:
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
为myenv
中的每个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)
})
最好的问候
答案 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)
}