При обучении людей R я в основном учу их предполагать, что кадры данных не имеют внутреннего порядка. Другими словами, каждая строка является независимым наблюдением, и, если использовать больше математических терминов, то фреймы данных являются неупорядоченными наборами. Я рассматриваю фреймы данных таким образом, потому что задолго до изучения R я выучил SQL, а стандарт SQL проясняет, что нет никаких гарантий относительно порядка записей в таблицах или порядка, в котором запросы будут возвращать результаты (это в основном зависит от реализации). Для меня это самое безопасное предположение для R, потому что это означает, что я всегда буду заказывать вещи вручную, когда это необходимо, что никогда не должно приводить к неожиданному поведению (при условии, что я не делаю свои собственные ошибки в заказе).
Проблема в том, что многие люди, приходящие на R, в том числе и те, кого я обучаю, не имеют такого же опыта программирования или работы с базами данных, как у меня. Поэтому очень часто люди видят противоположное предположение, потому что это менее трудоемко и никогда не доставляет им проблем. И, честно говоря, это, вероятно, безопасное предположение, по крайней мере, в случае базы R. Но тогда вы попадаете в пакеты, предоставленные пользователями, которые могут или не могут учитывать то же самое. Учитывая, что предположение никогда не вызывает у них проблем, иногда трудно убедить людей быть осторожными в размышлениях об этих вещах (и в настоящее время я изучаю проблему, хотя и в несколько загадочных случаях, где она может быть актуальной с практической точки зрения для многих людей).
Так что, когда я спорю с этим, одна вещь, которая будет очень полезна, это официальная документация по этому вопросу. Проблема в том, что мне еще не удалось найти явное подтверждение порядка строк в данных в R Определение языка . Одна вещь, которая немного полезна, - это часть в фреймах данных , в которой явно указано, что числа, которые многие люди считают номерами строк, на самом деле являются именами строк (R просто использует числа в качестве разумного значения по умолчанию), и я могу проиллюстрируем, что это не просто номера строк:
> df <- data.frame(a = 5:1, b = 3:7)
> df
a b
1 5 3
2 4 4
3 3 5
4 2 6
5 1 7
> df2 <- df[-3, ]
> df2
a b
1 5 3
2 4 4
4 2 6
5 1 7
>
Но есть ли что-нибудь более формальное доступное? Что-то вроде «пользователи не должны предполагать, что кадры данных имеют неявный порядок»? Или, наоборот, есть ли что-нибудь, что явно указывает, что пользователи могут зависеть от порядка строк в кадрах данных, по крайней мере, для базы R?