как функция порядка разрывает связи в R? - PullRequest
0 голосов
/ 11 мая 2018

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

Пример, представленный в документации R, показывает, что:

order(x <- c(1,1,3:1,1:4,3), y <- c(9,9:1), z <- c(2,1:9))

возвращает

[1]  6  5  2  1  7  4 10  8  3  9

Однако, что это значит, когда y разрывает связи по x, а z разрывает связи по y?вектор x:

[1] 1 1 3 2 1 1 2 3 4 3

, а вектор y:

[1] 9 9 8 7 6 5 4 3 2 1

Кроме того, если я исключу z из первой функции,

order(x <- c(1,1,3:1,1:4,3), y <- c(9,9:1))

itвозвращает:

[1]  6  5  1  2  7  4 10  8  3  9

, поэтому мне неясно, как числа в векторе y соответствуют порядку четырех 1, двух 2 и трех 3 в x.Я был бы очень признателен за помощь.Спасибо!

1 Ответ

0 голосов
/ 11 мая 2018

Давайте посмотрим на

idx <- order(x <- c(1,1,3:1,1:4,3), y <- c(9,9:1), z <- c(2,1:9))
idx;
#[1]  6  5  2  1  7  4 10  8  3  9

Первое, на что стоит обратить внимание, это то, что

x[idx]
# [1] 1 1 1 1 2 2 3 3 3 4

Итак, idx упорядочивает записи в x от наименьших до самых больших значений.

Значения в y и z влияют на то, как order обрабатывает связи в x.

Принимает записи x[5] = 1 и x[6] = 1.Поскольку здесь есть связь, order ищет записи в соответствующих позициях в y, то есть y[5] = 6 и y[6] = 5.Начиная с y[6] < y[5], записи в x сортируются x[6] < x[5].

Если в y также есть связь, order будет искать записи в следующем векторе z.Это происходит для x[1] = 1 и x[2] = 2, где оба y[1] = 9 и y[2] = 9.Здесь z разрывает связь, потому что z[2] = 1 < z[1] = 2 и, следовательно, x[2] < x[1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...