我有一个比较循环函数效率的练习。
我有功能
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处停止并且很难知道在何处添加中断。有人可以帮忙吗?
预先感谢
塞恩
答案 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
}