2012-01-01 86 views
6

我有一个简单但奇怪的问题。使用函数unlist丢失数据

indices.list是一个列表,包含118,771个元素(整数或数字)。通过应用函数unlist,我失去​​了大约500个元素。

请看下面的代码:

> indices <- unlist(indices.list, use.names = FALSE) 
> 
> length(indices.list) 
[1] 118771 
> length(indices) 
[1] 118248 

这怎么可能?我检查了是否indices.list包含任何NA。但它没有:

> any(is.na(indices.list) == TRUE) 
[1] FALSE 

data.set.merged是一个包含超过200,000行的数据帧。当我使用矢量索引(显然长度为118,248)为了获得data.set.merged的一个子集,我得到了一个118,771行的数据框!太奇怪了!

data.set.merged.2 <- data.set.merged[indices, ] 
> nrow(data.set.2) 
[1] 118771 

任何想法这是怎么回事?

+2

请您放一下'indices'更多的信息, 'indices.list',例如'class(indicies)','str(indicies)'等等 – kohske 2012-01-02 00:15:16

+1

我真的很想看看'dput(indices.list)'=) – aL3xa 2012-01-02 01:41:38

+0

好吧,我看着dput indices.list),并找到一些元素整数(0)。这可能是问题所在。我怎么测试有多少元素等于intrger(0)?整数(0)是什么意思?我通过使用grep函数创建了indices.integer。 – 2012-01-02 11:10:47

回答

10

嗯,你的第一个谜,可能的解释是,indices.list一些元素是NULL,这意味着当你使用unlist他们就会消失:

unlist(list(a = 1,b = "test",c = 2,d = NULL, e = 5)) 
    a  b  c  e 
    "1" "test" "2" "5"