所以,如果输入是一个向量,例如
v <- (1, 2, 3, 7, 2, 8, 9)
输出将是
(3, 2, 1, 7, 2, 9, 8)
我尝试使用嵌套的 for 和 if 循环,条件为
is.sorted
功能,但没有任何成功。
最佳答案
随着样本数据
x <- c(1, 2, 3, 7, 2, 8, 9)
您可以使用以下命令划分为“顺序组”
grp <- cumsum(!c(TRUE, diff(x)==1))
grp
# [1] 0 0 0 1 2 3 3
基本上,我们查看与前一个元素的差异,并在该值不等于 1 的任何时候跟踪更改。
您可以使用此组信息通过
ave
对这些值重新排序。 (这会进行组内转换)。revsort<-function(...) sort(...,decreasing=TRUE)
ave(x, grp, FUN=revsort)
# [1] 3 2 1 7 2 9 8
关于r - 仅当它们是连续的时,我如何才能反转向量中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43056329/