5
在R,当我添加空载体到列表,它不是实际上加入,象下面这样:R:添加空载体到列表
a = list()
a[[1]] = c()
print(length(a))
length(a)
将在这种情况下被打印0 ,而如果我将第二行更改为a[[1]] = c(1)
,那么列表的长度将为1,如预期的那样。在我的实现中,即使向列表添加空向量,我也需要更改列表长度。有没有办法做到这一点?
在R,当我添加空载体到列表,它不是实际上加入,象下面这样:R:添加空载体到列表
a = list()
a[[1]] = c()
print(length(a))
length(a)
将在这种情况下被打印0 ,而如果我将第二行更改为a[[1]] = c(1)
,那么列表的长度将为1,如预期的那样。在我的实现中,即使向列表添加空向量,我也需要更改列表长度。有没有办法做到这一点?
使用诸如vector()
(逻辑)和character()
之类的东西为您希望保持“空白”的元素分配一个特定的类。我会使用NULL类。您可以使用[<-
而不是[[<-
来分配NULL列表元素。
a <- list()
a[1] <- list(NULL)
a
# [[1]]
# NULL
length(a)
# [1] 1
OP实际上非常接近 - 'a [1] = list(c())'也可以得到相同的结果。 – thelatemail
'a [[1]] = vector()'会做到这一点。您可能还需要指定矢量模式,具体取决于用例。 'c()'返回'NULL',这将不起作用 – dww
从一开始就建立一个合适大小的列表是一个更好的主意。 'a < - list(NULL)'或'a < - vector(1,mode ='list')',以免在[第二个圆圈]结束(http://www.burns-stat.com /pages/Tutor/R_inferno.pdf#chapter.2)。 – alistaire