Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何自动创建空对象_R - Fatal编程技术网

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