[英]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.