Упорядочение списка по целевому вектору - PullRequest
0 голосов
/ 11 мая 2018

Предположим, у меня есть список:

  lst <- list(c(1,2), c(1,0), c(4,1), c(-7,11) )

Я хочу упорядочить этот список в соответствии с элементами другого вектора.Предположим, вектор:

 v<- c(-1, 3, 0, -5) 

Здесь 1-й элемент списка "lst" относится к 1-му элементу вектора "v" и аналогично для 2-го, 3-го и 4-го.Поскольку -5 <-1 <0 <3, требуемый порядок списка должен быть следующим: </p>

 list(c(-7,11), c(1,2), c(4,1), c(1,0))

Это будет окончательный вывод.

1 Ответ

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

Это не тот лайнер, который где-то существует, а обходной путь.Дает вам вывод, который вы хотите.При необходимости вы можете настроить порядок возрастания или убывания.

lst <- list(c(1,2), c(1,0), c(4,1), c(-7,11) )
v <- c(-1, 3, 0, -5) 
new.order <- seq(1:length(v))
ref.frame <- data.frame(v,new.order)
ref.frame <- ref.frame[order(v),] 

> ref.frame
   v  new.order
4 -5          4
1 -1          1
3  0          3
2  3          2

lst <- lst[c(ref.frame$new.order)]

> lst
[[1]]
[1] -7 11

[[2]]
[1] 1 2

[[3]]
[1] 4 1

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