【问题标题】:Is the FoldLeft function available in R?FoldLeft 函数在 R 中可用吗?
【发布时间】:2011-03-03 19:33:46
【问题描述】:

我想知道 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中是否存在这样的功能吗?

【问题讨论】:

    标签: r functional-programming list


    【解决方案1】:

    ?减少。 用法 减少(f,x,init,right = FALSE,accumulate = FALSE)

    【讨论】:

    • arf.我知道我在哪里见过它!您知道是否有专门用于具有最佳功能的列表处理的包?还是它们都已经在基础包中实现了,我没有找到它们?
    【解决方案2】:

    如果你想要一个结果向量,这将起作用:

    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 那样处理缺失值。

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 2011-10-09
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多