【发布时间】:2018-06-17 16:36:08
【问题描述】:
我有以下功能。我真的不喜欢我以 for 循环的形式表达它。是否可以使用apply 函数来表达它?
请注意,x 只是一个向量,如下所示。
c(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1,
0, 0, 0, 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0,
0, 0, 1, 0, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-1, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, -1, 0,
0)
testing <- function(x){
x_cumsum <- 0
for(i in 1:length(x)){
x_cumsum = x_cumsum + x[i]
if(x_cumsum < 0){
x_cumsum = 0
}
}
return(x_cumsum)
}
请注意,这有点类似于cumsum 函数,但有一个条件是只要它小于0,就会将x_cumsum 重置为0。
【问题讨论】:
-
为什么不使用
apply的内置函数cumsum? -
那里有一个条件,将
x_cumsum重置为0。这就是为什么我不能使用cumsum
标签: r