R 如何自动创建空对象
这个问题变得有趣多了 我的问题很简单。如何实现自动化R 如何自动创建空对象,r,R,这个问题变得有趣多了 我的问题很简单。如何实现自动化 g.names<-NULL g.names1<-NULL g.names2<-NULL g.names3<-NULL g.names4<-NULL g.names5<-NULL g.names6<-NULL g.names7<-NULL g.names8<-NULL g.names9<-NULL g.names10<-NULL g.names11<-NULL g.name
g.names<-NULL
g.names1<-NULL
g.names2<-NULL
g.names3<-NULL
g.names4<-NULL
g.names5<-NULL
g.names6<-NULL
g.names7<-NULL
g.names8<-NULL
g.names9<-NULL
g.names10<-NULL
g.names11<-NULL
g.names12<-NULL
gt.names<-list(
g.names1=g.names1,
g.names2=g.names2,
g.names3=g.names3,
g.names4=g.names4,
g.names5=g.names5,
g.names6=g.names6,
g.names7=g.names7,
g.names8=g.names8,
g.names9=g.names9,
g.names10=g.names10,
g.names11=g.names11,
g.names12=g.names12,
g.names=g.names)
gt.names
g.names执行此操作的“污染”方式是通过assign
和for
循环:
x <- c("", 1:12)
y <- paste("g.names", x, sep="")
for (v in y) {
assign(v, NULL)
}
在这种情况下,g.names[6]
将等同于您的问题中的g.names5
。使用*应用
函数族和分配
很容易,但更重要的是,为什么要这样做?用标量对象污染名称空间通常是个坏主意。也许您真的只想创建一个名为g.names
的列表
,在其中存储所有g.names*
对象?@MichaelChirico,您能详细说明名称空间污染和标量对象吗?在我的函数结束时,我只是做,gt.names你在函数中到底做了什么?有一堆带有不同整数后缀的变量不是一个好兆头。最有可能的情况是,数据可以通过lappy()。如果(按键=“1”);{g.names1Awesome。好主意,这将大大清理代码。将使用list方法。很抱歉,但list函数不起作用。分配g.names[[i]]可以尝试分配0或NA而不是NULL…您最终将在列表的每个插槽上分配一个对象
x <- c("", 1:12)
y <- paste("g.names", x, sep="")
for (v in y) {
assign(v, NULL)
}
g.names <- list()
for (i in 1:13) {
g.names[[i]] <- NULL
}
g.names
g.names <- rep(NULL, 13)
g.names