(я думал, что было бы полезно изложить идеи очень просто здесь, чтобы обобщить хороший материал, отправленный @doug, и связанный с @duffymo; +1 к каждому, кстати.)
? order сообщает вам, какой элемент исходного вектора нужно поместить первым, вторым и т. д., чтобы отсортировать исходный вектор, тогда как ? rank сообщите, какой элемент имеет самое низкое, второе низкое и т. д. значение. Например:
> a <- c(45, 50, 10, 96)
> order(a)
[1] 3 1 2 4
> rank(a)
[1] 2 3 1 4
Итак, order(a)
говорит: «Сначала поставьте третий элемент, когда сортируете ...», тогда как rank(a)
говорит: «Первый элемент является вторым самым низким. .. '. (Обратите внимание, что они оба согласны с тем, какой элемент является самым низким и т. Д., Они просто представляют информацию по-разному.) Таким образом, мы видим, что мы можем использовать order()
для сортировки, но мы не можем использовать rank()
следующим образом:
> a[order(a)]
[1] 10 45 50 96
> sort(a)
[1] 10 45 50 96
> a[rank(a)]
[1] 50 10 45 96
В общем случае order()
не будет rank()
, если вектор уже не был отсортирован:
> b <- sort(a)
> order(b)==rank(b)
[1] TRUE TRUE TRUE TRUE
Кроме того, поскольку order()
(по существу) работает над ряды данных, вы можете составить их, не влияя на информацию, но наоборот создает тарабарщину:
> order(rank(a))==order(a)
[1] TRUE TRUE TRUE TRUE
> rank(order(a))==rank(a)
[1] FALSE FALSE FALSE TRUE
Какая дополнительная нагрузка на сеть? накладные расходы TLS поверх HTTP составляют обмен ключами. В основном вы замечаете накладные расходы на обработку.
http://en.wikipedia.org/wiki/HTTP_Secure#Difference_from_HTTP
В дальнейшем (после сервера) ускоритель wan или прокси будут обрабатывать ваш трафик по-другому, поскольку он не кэшируется и не сжимается.