Есть ли явная гарантия того, что операции dplyr сохранят порядок строк? - PullRequest
6 голосов
/ 11 февраля 2020

Когда я учу людей, как использовать dplyr, я предупреждаю их, чтобы они не предполагали, что любые функции dplyr сохранят порядок своих фреймов данных / таблиц, если иное не указано в документации. Однако я не смог найти никакой официальной документации по этому вопросу, что затрудняет убеждение людей в том, что им следует быть более осторожными в предположении, что делает их код. Например, mutate () явно гарантирует, что число строк будет сохранено, но ничего не говорит о сохранении порядка. Существует ли какое-либо официальное заявление или документация, связанная с dplyr (или tidyverse) о том, какие предположения, если таковые имеются, могут быть сделаны в отношении сохранения порядка строк в функциях, на которые я могу указать людям?

1 Ответ

1 голос
/ 11 февраля 2020

Это из комментариев Roxygen в исходном коде mutate :

Для mutate():

  • Строки не затрагиваются.

  • Существующие столбцы будут сохранены, если не будут явно изменены.

  • Новые столбцы будут добавлены справа от существующих столбцов.

  • Столбцы с заданным значением NULL будут удалены Группы будут пересчитаны, если переменная группировки изменена.

  • Атрибуты фрейма данных сохраняются.

Для transmute():

  • Строки не пострадавшие.

  • Помимо группировки переменных, существующие столбцы будут удалены, если явно не сохранены.

  • Порядок столбцов соответствует порядку выражений.

  • Группы будут пересчитаны, если переменная группировки изменена.

  • Атрибуты фрейма данных сохраняются.

Что я бы сказал, что порядок строк сохраняется. Поскольку он исходит из исходного кода, я бы воспринял его как канонический.

...