web-dev-qa-db-ja.com

Rで3Dマトリックスを設定し、特定の要素にアクセスする

私はRで3Dマトリックスをセットアップしようとしています。これは簡単なものだと思います。ただし、これまでのところ解決策が見つかりませんでした。 365x6x4マトリックスを作成したいとしましょう。また、マトリックス内の1つのエントリを変更する方法も重要です。値204を要素[304,5,2]に割り当てたいとしましょう。あなたの答えに感謝します!

ありがとう!ベスト、F

30
Fabian Stolz

これを試して:

ar <- array(someData, c(365, 6, 4));  
ar[304,5,2] <- 204;

ここで、someData

someData <- rep(0, 365*6*4);  

またはさらに良いかもしれません

someData <- rep(NaN, 365*6*4);  
32
Havelock

行列は、配列の特別な2次元のケースです。 (?matrixのヘルプから引用)。

したがって、arrayが必要です。

x <- array(rep(1, 365*5*4), dim=c(365, 5, 4))
str(x)
num [1:365, 1:5, 1:4] 1 1 1 1 1 1 1 1 1 1 ...

特定の値を設定します。

x[305, 5, 2] <- 204

1つのスライスを印刷します。

x[305, , ]
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    1    1    1    1
[3,]    1    1    1    1
[4,]    1    1    1    1
[5,]    1  204    1    1
13
Andrie

この簡単な例を試してみてください(例がかなり小さいので、何が起こっているのかが明確になっています。正確な質問に合わせて微調整する方法を以下に説明します!)...

m = array(1:60, dim=c(3,4,5))

m[2,1,5]
[1] 50

m[2,1,5] = -50

m[2,1,5]
[1] -50

mと入力して、3D配列全体を表示します:)

あなたの例では、最初の配列をm = array(NA, dim=c(365,6,4))として設定します(これは最初にNAで埋められます-埋めるためのデータはありますか?)そしてもちろん割り当てはm[304,5,2] = 204です:)

5
Tim P