这个问题实际上变得更加有趣。
我的问题很简单。我该如何自动化?
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 <- list()
for (i in 1:13) {
g.names[[i]] <- NULL
}
g.names
有趣的是,这不起作用!为列表中的对象分配NULL实际上等同于删除。所以,现在问题仍然存在。
答案 0 :(得分:1)
&#34;污染&#34;这样做的方法是通过assign
和for
循环:
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
在这里,您将创建一个list
对象,其中包含13个变量的值,对应于原始示例中的g.names
,g.names1
,...,g.names12
。您可以使用g.names[[6]]
来引用g.names5
。污染较少,更优雅,更优雅。我想。
如果13 g.names
只是一系列字符或数字,那么矢量就可以:
g.names <- rep(NULL, 13)
g.names
,在这种情况下,g.names[6]
将相当于您问题中的g.names5
。