Один из вариантов - split
vector
с помощью sign
из vector
в list
из vector
с, цикл через vector
, order
abs
раствор.значение элементов в порядке decreasing
, получить lengths
элементов list
, одинаковые с заполнением NA
в конце, rbind
их вместе как matrix
, преобразовать его в vector
с помощью c
и удалите элементы NA
с na.omit
lst1 <- sapply(split(v1, sign(v1)), function(x)
x[order(abs(x), decreasing = TRUE)])[2:1]
c(na.omit(c(do.call(rbind, lapply(lst1, `length<-`, max(lengths(lst1)))))))
#[1] 3.0 -5.0 1.5 -0.6 1.0 -0.5 0.7
data
v1 <- c(-0.5, -0.6, 0.7, 1, 1.5, 3, -5)