2016-12-31 15 views
1

私は非常に単純な問題を抱えていますが、他の言語のfor-loopを繰り返してこのような問題を解決するために使用されたため、Rで簡単な解決策を見つけることができませんでした。リストメンバーを段階的に集計する

rand.list <- list(4,3,3,2,5) 

私は結果は次のようになりますので、絶えず上昇パターンにこのランダムな分散パターンを変更したい:

[4,7,10,12,17] 

のは、私のようにランダムに分散数値のリストを持っているとしましょう

+0

すごかったです。あなたのソリューションは機能します。それを解決策として掲示することができますか? – MayaK

答えて

1

最初にcumsum(unlist(rand.list))を実行しました。unlistは、リストをプレーンベクタに縮小しています。しかし、私の幸運な試みは、cumsum(rand.list)も動作することを示しています。

cumsumのソースコード.Primitiveは、さらに調査しにくい内部S3メソッドディスパッチャを呼び出しているので、この動作がどのようにしてどうなっているのかは分かりません。我々はcumsum(unlist(x))を行う必要があり、この場合、

x <- list(1:2,3:4,5:6) 
cumsum(x) ## does not work 

x <- list(c(1,2), c(3,4), c(5,6)) 
cumsum(x) ## does not work 

:しかし、私は次のように他の補完的な実験を行います。

+0

あなたのソリューションはReduce機能と同等に機能しますが、この機能は私の問題に対して特別に扱われているようですので、解決策としてマークします。 – MayaK

+0

私はまだRになるとちょっと新郎ですので謝ります。 Cレベルの評価では、cumsumはリストを反復するためにそれらの関数を適用するようなベクトル化手法を使用しているため、より高速ですか? – MayaK

2

TRUEaccumulateパラメータセットでReduceを使用してみてください:

Reduce("+",rand.list, accumulate = T) 

私はこれが役立つことを願っています。

関連する問題