如何解决如何按递增和递减数字的顺序计算运行次数?
u <- c(0.86,0.11,0.23,0.03,0.13,0.06,0.55,0.64,0.87,0.1)
我想要最大长度的不间断子序列(向上),其中 ui 单调增加,也就是说,序列以长度为 1(0.86)的 rup up 开始,然后是长度为 2(0.11,0.23),然后是长度为 2 (0.03,0.13) 的另一次上升,长度为 4 (0.06,0.87) 的上升,最后是长度 1 (0.10) 的上升。 我想将这些数字 (1,2,4,1) 放在向量中,我该怎么做?
解决方法
遍历向量并跟踪连续记录。
u <- c(0.86,0.11,0.23,0.03,0.13,0.06,0.55,0.64,0.87,0.1)
num=numeric()
count=1
for (i in 2:length(u)) {
if (u[i]>u[i-1]) {
count=count+1
} else {
num=c(num,count)
count=1
}
if (i==length(u)) {
num=c(num,count)
}
}
num
[1] 1 2 2 4 1
,
使用 tapply
的基本 R 选项:
u <- c(0.86,0.1)
unname(tapply(u,cumsum(c(TRUE,diff(u) < 0)),length))
#[1] 1 2 2 4 1
使用 diff
我们计算每个连续值之间的差异,并在差异低于 0 时创建一个新组。使用 tapply
我们计算每个组的 length
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。