2012-01-01 109 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"