答案 0 :(得分:7)
(至少)有两种方法可以执行此操作,显式(for
-循环)和隐式(矢量化)方法。
function(x) {
s <- 0
for (i in seq_along(x)) {
s <- s + (x[i]^4 - 16*x[i]^2 + 5*x[i])/2
}
s
}
(先前发布的答案建议您可以使用sapply()
,但比显式的for
循环要难一些……)
由于R在向量化的^,*
,-
,+
,/
) >这样,您可以一次在所有元素上计算此表达式,然后使用sum()
函数。向量化的解决方案更快,更容易阅读(一旦您习惯了)。
function(x) {
sum((x^4 - 16*x^2 + 5*x)/2)
}