簡體   English   中英

如何將二維矩陣更改回 R 中的 3D 數組

[英]How to change 2D matrix back to 3D array in R

我有一個 3D 數組,它帶有 lon(1:144)(范圍 0-360,步長為 2.5)、lat(1:29)(20-90,步長為 2.5)和一個時間變量(1:180) (30 年,包括每年 6 個月)。

lon <- seq(from = 0, to = 360, by = 2.5) 
lat <- seq(from = 17.5, to = 90, by = 2.5)
time <- c(1:180)
var <- c(28532:31298)

我通過乘以 lon*lat 將數據轉換為 2D 矩陣:

new2Ddata <- matrix(oldmatrix, prod(dim(oldmatrix)[1:2]), dim(oldmatrix)[3]) 

然后我計算了svd:

svd.result <- svd(new2Ddata)

我得到了包含三個組件的 svd.result 並使用組件 U [1:4176 (lon*lat), 1:180 (variable)] 制作了一個新的 dataframe

modes <- as.data.frame(svd.result$u)

我必須再次將其轉換為 3D(經度、緯度、時間和時間變量)。 我試過了:

dim(modes) <- c(144,29,180)

我收到一個錯誤:dim(modes) <- c(144, 29, 180) 中的錯誤:dims [product 751680] do not match the length of object [180] 關於如何做的任何想法? 謝謝您的幫助!

問題在於這行代碼modes <- as.data.frame(svd.result$u) 為了將結果轉換回 3D 數組,您需要modes實際上是矩陣而不是 dataframe。 如果您只是將其更改為modes <- svd.result$u ,您的代碼應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM