我想在R中設置一個3D矩陣。我想這是一個簡單的方法。但是,到目前爲止我還沒有找到解決方案。 假設我們要創建一個365x6x4矩陣。 對我而言,至關重要的是我可以如何更改矩陣中的一個條目。假設我們想將值204分配給元素[304,5,2]。 我非常感謝你的回答!在R中設置3D矩陣並訪問某些元素
謝謝!最好,F
我想在R中設置一個3D矩陣。我想這是一個簡單的方法。但是,到目前爲止我還沒有找到解決方案。 假設我們要創建一個365x6x4矩陣。 對我而言,至關重要的是我可以如何更改矩陣中的一個條目。假設我們想將值204分配給元素[304,5,2]。 我非常感謝你的回答!在R中設置3D矩陣並訪問某些元素
謝謝!最好,F
試試這個:
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);
試試這個簡單的例子(已經取得的例子一個相當小的一個,這樣很明顯這是怎麼回事 - !我下面如何調整它的確切的問題解釋)......
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))
(這將使用NAs填充以開始 - 您是否有數據填充它?)當然,作業是m[304,5,2] = 204
:)
爲了澄清,'m [2,1,5]'最初是50(由於'm'填充的方式),並且在更改後變爲-50('m [2,1,5] = - 50 ')。輸入'm'查看整個3D陣列:) –
矩陣是一個數組的特殊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
打印一個切片:
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
當然,第一個rep命令在這裏是多餘的。看到我的答案爲一個例子,你可以看到整個數組:) –
@TimP它可能是多餘的,但它也明顯代表了什麼代碼。依賴於行爲或特徵R的X *可能會分散人們試圖在答案中說明的實際問題。提出這個觀點曾經增加了這個問題的整體內容。做兩次似乎很小。 –
對不起,你覺得它很小,雖然哈夫洛克肯定讚賞指針 - 所以我很高興我也提到他:) –
3D矩陣?這不是一個3D陣列嗎? – Havelock