Потеря данных с помощью функции unlist - PullRequest
8 голосов
/ 02 января 2012

У меня простая, но странная проблема.

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

Есть идеи, что здесь происходит?

1 Ответ

10 голосов
/ 02 января 2012

Что ж, для вашей первой загадки, вероятное объяснение состоит в том, что некоторые элементы indices.list равны NULL, что означает, что они исчезнут, когда вы используете unlist:

unlist(list(a = 1,b = "test",c = 2,d = NULL, e = 5))
     a      b      c      e 
   "1" "test"    "2"    "5" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...