我是一名碩士生,試圖將R用於我的論文,但我對R非常陌生,我沒有任何編程經驗,所以請溫柔!我嘗試在{geomorph}包中使用一堆3D座標數據來運行標準幾何形態分析。爲了方便起見,我已將數據拆分爲更小的.csv文件。將二維矩陣轉換爲三維數組時出錯R
我已經設置了數據文件的方式:
X1 - Y1 - Z1 - X2 - Y2 - Z2 - … - Z215
[Indiv.1] 323 - 87 - 68 - 323 - 87 - 68 - - 0
[Indiv.2] 363 - 88 - 81 - 363 - 88 - 81 - - 77
[Indiv.3] 335 - 77 - 70 - 335 - 77 - 70 - - 0
[Indiv.4] 359 - 71 - 81 - 359 - 71 - 81 - - 0
…
[Indiv.50] 366 - 71 - 92 - 367 - 72 - 91 - - 0
我導入至R使用read.table
就好(尺寸爲50×645),並且我甚至可以將所產生的數據幀分成矩陣使用as.matrix
(保持50 x 645維度)。但是,當我使用arrayspecs
{geomorph}將數據轉換爲數組(尺寸爲215 x 3 x 50)時,我得到了超過50條警告,指出「數據長度不是數字的倍數或倍數行」。我一直在使用
> WM.array<-arrayspecs(WM.mat,215,3,byLand=F)
但每次我運行此命令時,我得到了警告,「數據長度不是一個子多或行數的倍數。」我相信{geomorph}想在一個數據具有3列(X,Y,Z)和215行(座標點的最大數量)的3D數組,找到實際解決此錯誤的參考(至少沒有任何這是我可以理解的)。在此先感謝。
我用一個隨機50×645矩陣代碼,並沒有產生任何警告或錯誤:'墊< - 矩陣(runif(50 * 645 ),nrow = 50,ncol = 645)';昏暗(墊子)#[1] 50 645'; 'spec.mat < - arrayspecs(mat,215,3,byLand = F)'; dim(spec.mat)#[1] 215 3 50'。我猜想你的數據可能有問題,但由於你已經檢查了他們的維度,所以我沒有什麼可以猜測的。 –
謝謝!我最終在第一列中創建了非數字值,我試圖創建行名,這是我的問題似乎已經出現的地方。我刪除了這一欄,並安全地轉移到了我的數據中。再次感謝! –
將來可以避免在調用'read.table'時通過使用'row.names = 1'來刪除應該是行名的第一列。參見'read.table'中的參數'row.names'。祝你好運! ;) –