[英]Is the FoldLeft function available in R?
我想知道在R中是否有foldLeft函数(和foldRight?)的实现。
该语言应该是“相当”的功能导向,因此我认为应该有这样的东西,但我在文档中找不到它。
对我来说,foldLeft函数适用于列表并具有以下签名:
foldLeft[B](z : B)(f : (B, A) => B) : B
它应该返回以下结果:
f(... (f(f(z, a0), a1) ...), an) if the list is [a0, a1, ..., an].
(我使用Scala List API的定义)
有人知道R中是否存在这样的功能吗?
?降低。 用法减少(f,x,init,right = FALSE,accumulate = FALSE)
如果你想要一个结果向量,这将有效:
foldl = function(f, v, x) {w = v; for (i in 1 : length(v)) { x = w[[i]] = f(x, v[[i]]) }; w }
现在你可以将cumsum
重新定义为
cumsum(v) = foldl(function(x,y) { x+y }, v, 0)
要改进它,你应该处理像Reduce
那样的缺失值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.