gpt4 book ai didi

r - 仅当它们是连续的时,我如何才能反转向量中的数字?

转载 作者:行者123 更新时间:2023-12-04 16:51:03 25 4
gpt4 key购买 nike

所以,如果输入是一个向量,例如

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com