Принудительно is.unsorted () в false - PullRequest
       0

Принудительно is.unsorted () в false

0 голосов
/ 23 сентября 2019

У меня есть объект dataframe, который предварительно отсортирован, и я пытаюсь вызвать функцию, которая требует его сортировки.Каким-то образом is.unsorted () возвращает true.Затем R приступает к его сортировке.

К сожалению, там около 2 миллионов записей, и у меня нет памяти.Есть ли способ заставить is.unsorted быть ложным?

1 Ответ

0 голосов
/ 30 сентября 2019

Быстрая проверка RDocumentation ( is.unsorted ) включает следующую строку:

Примечание: эта функция предназначена для объектов с одномерными индексами, как описано выше,Кадры данных, матрицы и другие массивы могут давать удивительные результаты.

Поэтому вам следует избегать использования этой функции для полных кадров данных.Вместо этого вам следует запускать эту функцию для определенных функций фрейма данных, а не для всего фрейма данных.

Например, приведенный ниже фрагмент кода.Вы можете видеть, что эта функция работает как положено на одномерных объектах (векторах);однако имеет неожиданный результат при запуске на фрейме данных (возвращается FALSE при ожидании TRUE результата).

Однако, когда фрейм данных был подмножеством (с использованием оператора $) и is.unsorted() функция запускается для отдельных функций, а затем возвращает ожидаемый результат.

> vec <- c(1,2,3,4,5)
> is.unsorted(vec)  # Expected: FALSE
[1] FALSE

> vec <- c(1,3,2,5,4)
> is.unsorted(vec)  # Expected: TRUE
[1] TRUE

> vec <- c("A","B","C","D","E")
> is.unsorted(vec)  # Expected: FALSE
[1] FALSE

> vec <- c("A","C","B","E","D")
> is.unsorted(vec)  # Expected: TRUE
[1] TRUE

> dat <- data.frame(num=c(1,2,3,4,5)
+                  ,chr=c("A","B","C","D","E")
+                  ,stringsAsFactors=FALSE
+                  )
> is.unsorted(dat)  # Expected: FALSE
[1] FALSE

> dat <- data.frame(num=c(1,3,2,5,4)
+                  ,chr=c("A","B","C","D","E")
+                  ,stringsAsFactors=FALSE
+                  )
> is.unsorted(dat)  # Expected: TRUE
[1] FALSE

> is.unsorted(dat$num)  # Expected: TRUE
[1] TRUE

> is.unsorted(dat$chr)  # Expected: FALSE
[1] FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...