2010-06-15 40 views
10

ben (ve foldRight?) R.FoldLeft işlevi R'de kullanılabilir mi?

dil odaklı "yerine" işlevsel olması gerekiyordu ve dolayısıyla böyle bir şey olması gerektiğini düşünüyorum edilir foldLeft fonksiyonunun bir uygulama olup olmadığını bilmek istiyorum, ancak belgelerde bulamadım. Bana göre

, foldLeft işlevi listede geçerlidir ve aşağıdaki imzası vardır:

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

(I Scala List API tanımını kullanın: Aşağıdaki sonuç döndürmek gerekiyordu

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

R'de böyle bir fonksiyonun var olup olmadığını bilen var mı?

cevap

12

? Azaltın. Kullanımı azaltın sonuçların bir vektör istiyorsanız

+0

arf. Onu bir yerlerde görmüştüm! En iyi işlevlerle liste işlemeye ayrılmış bir paket olup olmadığını biliyor musunuz? ya da hepsi zaten temel pakette uygulandılar ve onları bulamadım mı? – SRKX

1

, işe yarayacak (f, x init, sağ, = YANLIŞ YANLIŞ birikir =):

Şimdi
foldl = function(f, v, x) {w = v; for (i in 1 : length(v)) { x = w[[i]] = f(x, v[[i]]) }; w } 

Eğer

olarak cumsum yeniden tanımlayabilirsiniz
cumsum(v) = foldl(function(x,y) { x+y }, v, 0) 

Bunu geliştirmek için Reduce gibi eksik değerleri kullanmalısınız.

İlgili konular