2012-01-01 16 views
6

Mam prosty, ale dziwny problem.Utrata danych za pomocą funkcji unlist

indices.list to lista zawierająca 118,771 elementów (całkowitych lub numerycznych). Stosując funkcję unlist, tracę około 500 elementów.

Spójrz na poniższy kod:

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

Jak to możliwe ?? Sprawdziłem, czy index.list zawiera jakąkolwiek NA. Ale nie:

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

data.set.merged jest ramką danych zawierającą ponad 200 000 wierszy. Kiedy używam indeksów wektorowych (które najwyraźniej ma długość 118.248), aby uzyskać podzbiór danych.set.merged, otrzymuję ramkę danych z 118.771 wierszy! To takie dziwne!

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

Jakieś pomysły, co się tutaj dzieje?

+2

mógłbyś umieścić więcej informacji o 'indices' i 'indices.list', np.' class (indicies) ',' str (indicies) ', itp. – kohske

+1

Chciałbym zobaczyć' dput (indices.list) '=) – aL3xa

+0

OK, przyjrzałem się dput (indices.list) i znaleziono elementy integer (0). To może być problem. jak mogę przetestować ile elementów jest równych intrger (0)? I co dokładnie oznacza liczba całkowita (0)? Stworzyłem indices.integer za pomocą funkcji grep. –

Odpowiedz

10

Cóż, na pierwszy misterium, prawdopodobnym wyjaśnieniem jest to, że niektóre elementy indices.listNULL, co oznacza, że ​​będą one znikają po użyciu unlist:

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