2010-06-15 7 views
10

R에 foldLeft 함수 (및 foldRight?)의 구현이 있는지 알고 싶습니다.FoldLeft 함수는 R에서 사용할 수 있습니까?

이 언어는 "기능적"이라고 가정하고 있으므로이 같은 것이 있어야한다고 생각합니다. 그러나 나는 그것을 문서에서 발견 할 수 없었다. 나에게

는 foldLeft 함수는 목록에 적용되며 다음과 같은 서명이 있습니다

f(... (f(f(z, a0), a1) ...), an) if the list is [a0, a1, ..., an]. 

가 (필자는 Scala List API의 정의를 사용 : 다음과 같은 결과를 반환하도록되어

foldLeft[B](z : B)(f : (B, A) => B) : B 

을)

그런 기능이 R에 있는지 알 수 있습니까?

답변

12

? 줄이기. 사용 줄 당신은 결과의 벡터를 원하는 경우

+0

arf. 나는 내가 그것을 어디인가에서 보았다라는 것을 알고 있었다! 최적의 기능을 가진 목록 처리 전용 패키지가 있는지 알고 있습니까? 아니면 모두 기본 패키지에 이미 구현되어 있으며 찾지 못했습니까? – SRKX

1

, 이것은 작동합니다 (F, X, 초기화, 오른쪽 = FALSE 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처럼 누락 된 값을 처리해야합니다.

관련 문제