2017-07-17 17 views
3

皆で追加してください!私は非常にストレートな問題があります。私はこのようなワットと呼ばれる3次元配列、持っている:3次元配列のn次元を一緒にR

> w 
, , 1 

    [,1] [,2] [,3] 
[1,] 0.5 0.5 0.5 
[2,] 0.5 0.5 0.5 

, , 2 

    [,1] [,2] [,3] 
[1,] 0.1 0.1 1.0 
[2,] 0.5 0.5 0.5 

さて、それだけで表現であるが、これは実際のデータではありません。

私は、w[1, 1, 1] + w[1, 1, 2] + w[1, 1, 3]のような3次元の要素を一緒に追加していますが、3次元のメンバー数はわかりません。私はforループでそれを行うことはできません。なぜなら、それは入れ子にされたforループの中に既にあります(2つのforループ)。

だから、私は基本的に一緒にw[, , 1] + w[, , 2] + w[, , 3]....

を追加する必要があり、私は

for (k in 1:dims(w)[3]) # it is one of the for loops 
lapply(w[, , k], '+') 

のようなものを試してみましたが、それは唯一のw[, , 1]を印刷し、それはそれです。

C++では、単にy + = w [、、n]と書くと思います。

私はこれにアプローチすべきか、それとも解決策を考えるべきか、本当に感謝しています。

*編集:非常に恥ずかしい誤植。これが何をしたいんよう

+3

'rowSums'と' colSums'を試してみてください。したがって、以下のデータを使用します。 'rowSums(my.array、dims = 2)' – user20650

答えて

2

はルックス:

# sample data 
w<-array(sample(1:4),dim=c(3,3,3)) 

# sum over dimensions 1 and 2 
apply(w, MARGIN=c(1, 2), sum) 

は、この情報がお役に立てば幸い!

+0

ありがとうございました!それは完全にそれを行います。 また、まだ読んでいることが多いことがわかります:) –

関連する問題