2013-06-04 60 views
9

我跑R中的以下內容並收到了同樣的輸出都matrix()as.matrix(),現在我不知道它們之間的區別是什麼:r中的matrix()和as.matrix()有什麼區別?

> a=c(1,2,3,4) 
> a 
[1] 1 2 3 4 
> matrix(a) 
    [,1] 
[1,] 1 
[2,] 2 
[3,] 3 
[4,] 4 
> as.matrix(a) 
    [,1] 
[1,] 1 
[2,] 2 
[3,] 3 
[4,] 4 
+4

閱讀文檔。例如,比較DF < - data.frame(a = 1:5,b = 6:10)的輸出; as.matrix(DF);矩陣(DF)'。 – Roland

+1

是的,但我沒有處理data.frame,即我的矩陣只是數字數據。 –

+2

你問這些功能之間的區別。差異是記錄在案,我向你展示了一個例子。功能可以(在特定情況下)給出相同的結果,不會影響您對問題的回答。 – Roland

回答

9

matrix需要data進一步論證nrowncol

?matrix 
If one of ‘nrow’ or ‘ncol’ is not given, an attempt is made to 
infer it from the length of ‘data’ and the other parameter. If 
neither is given, a one-column matrix is returned. 

as.matrix是具有用於不同類型的不同的行爲的方法,但主要是給回從n * m個輸入端的n * m個矩陣。

?as.matrix 
‘as.matrix’ is a generic function. The method for data frames 
will return a character matrix if there is only atomic columns and 
any non-(numeric/logical/complex) column, applying ‘as.vector’ to 
factors and ‘format’ to other non-character columns. Otherwise, 
the usual coercion hierarchy (logical < integer < double < 
complex) will be used, e.g., all-logical data frames will be 
coerced to a logical matrix, mixed logical-integer will give a 
integer matrix, etc. 

它們之間的區別與輸入的形狀來爲主,matrix不關心的形狀,as.matrix現在和將來保持它(雖然細節取決於對輸入的實際方法,並在您的情況下的無量綱矢量對應於一個列的矩陣。)如果輸入是原始的,邏輯的,整數,數字,字符或絡合物等

4

matrix構建從其第一矩陣不要緊參數,給定數量的行和列。如果提供的對象對於所需的輸出不夠大,則matrix將回收其元素:例如matrix(1:2), nrow=3, ncol=4)。相反,如果物體太大,則剩餘元素將被丟棄:例如,matrix(1:20, nrow=3, ncol=4)

as.matrix的第一個參數轉換成矩陣,矩陣的尺寸將從輸入推斷出來。

0

矩陣根據給定的一組值創建矩陣。 as.matrix嘗試將其參數轉換爲矩陣。此外,Matrix()還努力使邏輯矩陣保持邏輯,即確定特殊結構的矩陣,如對稱矩陣,三角形對角矩陣或對角矩陣。 as.matrix是一個通用函數。如果只有原子列和任何非(數字/邏輯/複合)列,將as.vector應用於因子和格式到其他非字符列,則數據框的方法將返回字符矩陣。否則,通常脅迫層次結構(邏輯<整數<雙<配合物)將被使用,例如,所有邏輯數據幀將被強制爲邏輯矩陣,混合邏輯整數會給出一個整數矩陣等

as.matrix的默認方法調用as.vector(x),因此例如強制要素向量。

相關問題