在特定环境中修改对象
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)
}
假设我有一个包含一些对象的环境:
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)
}