je sais pas si ca aide mais la fonction dans "R" qui fait ca est la suivante mais comme j'ai pas réussis pas a déchiffrer ce code je peux pas le garantir...
> order
function (..., na.last = TRUE, decreasing = FALSE)
{
z <- list(...)
if (any(unlist(lapply(z, is.object)))) {
z <- lapply(z, function(x) if (is.object(x))
xtfrm(x)
else x)
if (!is.na(na.last))
return(do.call("order", c(z, na.last = na.last, decreasing = decreasing)))
}
else if (!is.na(na.last))
return(.Internal(order(na.last, decreasing, ...)))
if (any(diff(sapply(z, length)) != 0L))
stop("argument lengths differ")
ans <- sapply(z, is.na)
if (is.list(ans))
return(integer(0L))
ok <- if (is.matrix(ans))
!apply(ans, 1, any)
else !any(ans)
if (all(!ok))
return(integer(0L))
z[[1L]][!ok] <- NA
ans <- do.call("order", c(z, decreasing = decreasing))
keep <- seq_along(ok)[ok]
ans[ans %in% keep]
}