2017-08-14 61 views
5

在R,当我添加空载体到列表,它不是实际上加入,象下面这样:R:添加空载体到列表

a = list() 
a[[1]] = c() 
print(length(a)) 

length(a)将在这种情况下被打印0 ,而如果我将第二行更改为a[[1]] = c(1),那么列表的长度将为1,如预期的那样。在我的实现中,即使向列表添加空向量,我也需要更改列表长度。有没有办法做到这一点?

+1

'a [[1]] = vector()'会做到这一点。您可能还需要指定矢量模式,具体取决于用例。 'c()'返回'NULL',这将不起作用 – dww

+0

从一开始就建立一个合适大小的列表是一个更好的主意。 'a < - list(NULL)'或'a < - vector(1,mode ='list')',以免在[第二个圆圈]结束(http://www.burns-stat.com /pages/Tutor/R_inferno.pdf#chapter.2)。 – alistaire

回答

3

使用诸如vector()(逻辑)和character()之类的东西为您希望保持“空白”的元素分配一个特定的类。我会使用NULL类。您可以使用[<-而不是[[<-来分配NULL列表元素。

a <- list() 
a[1] <- list(NULL) 
a 
# [[1]] 
# NULL 
length(a) 
# [1] 1 
+1

OP实际上非常接近 - 'a [1] = list(c())'也可以得到相同的结果。 – thelatemail