R-何时添加休息

时间:2018-10-27 14:29:27

标签: r

我有一个比较循环函数效率的练习。

我有功能

banana <- function(x)
{d <- length(x)
xi <- x[1:(d-1)]
xnext <- x[2:d]

sum <- sum(100*(xnext-xi^2)^2 + (xi-1)^2)
y <- sum
return(y)
}

我想使用for循环(或任何循环)重写以上内容。我到目前为止

for (i in x){
  n = length(x)
  y <- 100*(x[i+1]-x[i]^2)^2 +(x[i]-1)^2
  }

我希望函数在n-1处停止并且很难知道在何处添加中断。有人可以帮忙吗?

预先感谢

塞恩

1 个答案:

答案 0 :(得分:3)

您实际上不必添加break语句,您可以遍历除第n个i之外的所有i。 [-length(x)]从序列中删除最后一个元素。

y <- 0
for (i in seq_along(x)[-length(x)]) {
  y <- y + 100 * (x[i + 1] - x[i])^2 + (x[i] - 1)^2
}