目标是量化一定的增长。定义如下:序列中的每个值应与前面的值进行比较,如果以下值大于前一个值,则应考虑(返回)。如果没有,则应予以删除。因此,更大的价值被用来作为以下的一个新的参考。随升序值移动的阈值。我试过这个:
growthdata<-c(21679, 21722, 21788, 21863, 21833, 21818, 21809, 21834, 21937, 22026, 22025, 22235, 22191, 22348, 22399, 22463, 22532, 22562, 22589, 22609, 22556, 22565)
growthfun<-function (a) {
for (i in a) {
if (i < (i+1)) {
return(i)
}
else {
next
}
}
}这是初学者的问题。我似乎无法定义以下值(i+1)。按照我写的方式,R只是把1加到I的值上。结果应该如下所示:
21679, 21722, 21788, 21863, 21937, 22026, 22235, 22348, 22399, 22463, 22532, 22562, 22589, 22609
提前感谢!
发布于 2020-04-18 12:26:00
函数growthfun中存在一些问题
print,而不是return。否则,该函数在满足条件时退出-- i in seq_along(a)
a中元素的索引,该索引应该是
对于您的目标来说,一个例子可能如下所示:
如果要打印进度,则使用print
growthfun<-function (a) {
for (i in seq_along(a)) {
if (a[i] >= max(a[1:(i-1)])) {
print(a[i])
}
else {
next
}
}
}这给
> growthfun(growthdata)
[1] 21679
[1] 21722
[1] 21788
[1] 21863
[1] 21937
[1] 22026
[1] 22235
[1] 22348
[1] 22399
[1] 22463
[1] 22532
[1] 22562
[1] 22589
[1] 22609如果要将输出保存在数组
growthfun<-function (a) {
r <- c()
for (i in seq_along(a)) {
if (a[i] >= max(a[1:(i-1)])) {
r <- c(r,a[i])
}
else {
next
}
}
r
}这给
> growthfun(growthdata)
[1] 21679 21722 21788 21863 21937 22026 22235 22348 22399 22463
[11] 22532 22562 22589 22609发布于 2020-04-18 12:22:29
您可以只对cummax值使用unique。
unique(cummax(growthdata))
#[1] 21679 21722 21788 21863 21937 22026 22235 22348 22399 22463 22532 22562 22589 22609https://stackoverflow.com/questions/61288931
复制相似问题