我跑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
我跑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
matrix
需要data
進一步論證nrow
和ncol
。
?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
現在和將來保持它(雖然細節取決於對輸入的實際方法,並在您的情況下的無量綱矢量對應於一個列的矩陣。)如果輸入是原始的,邏輯的,整數,數字,字符或絡合物等
matrix
構建從其第一矩陣不要緊參數,給定數量的行和列。如果提供的對象對於所需的輸出不夠大,則matrix
將回收其元素:例如matrix(1:2), nrow=3, ncol=4)
。相反,如果物體太大,則剩餘元素將被丟棄:例如,matrix(1:20, nrow=3, ncol=4)
。
as.matrix
將的第一個參數轉換成矩陣,矩陣的尺寸將從輸入推斷出來。
矩陣根據給定的一組值創建矩陣。 as.matrix嘗試將其參數轉換爲矩陣。此外,Matrix()還努力使邏輯矩陣保持邏輯,即確定特殊結構的矩陣,如對稱矩陣,三角形對角矩陣或對角矩陣。 as.matrix是一個通用函數。如果只有原子列和任何非(數字/邏輯/複合)列,將as.vector應用於因子和格式到其他非字符列,則數據框的方法將返回字符矩陣。否則,通常脅迫層次結構(邏輯<整數<雙<配合物)將被使用,例如,所有邏輯數據幀將被強制爲邏輯矩陣,混合邏輯整數會給出一個整數矩陣等
as.matrix的默認方法調用as.vector(x),因此例如強制要素向量。
閱讀文檔。例如,比較DF < - data.frame(a = 1:5,b = 6:10)的輸出; as.matrix(DF);矩陣(DF)'。 – Roland
是的,但我沒有處理data.frame,即我的矩陣只是數字數據。 –
你問這些功能之間的區別。差異是記錄在案,我向你展示了一個例子。功能可以(在特定情況下)給出相同的結果,不會影響您對問題的回答。 – Roland