私は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は汎用関数です。アトミック列と非数値(数値/論理/複合)列のみがある場合は、データフレームのメソッドは文字行列を返し、要素にasvectorを適用し、他の文字以外の列にフォーマットします。そうでなければ、通常の強制階層(論理<整数<ダブル<複合体)は、例えば、使用され、全論理データフレームは論理的マトリックスに強制され、混合論理整数整数行列を与える、等
as.matrixのデフォルトのメソッドはas.vector(x)を呼び出し、したがってファクタを文字ベクトルに強制します。
ドキュメントをお読みください。たとえば、DF < - data.frame(a = 1:5、b = 6:10)の出力を比較します。 as.matrix(DF);行列(DF) ' – Roland
はい、私はdata.frameを扱っていません。つまり、私の行列は数値データだけです。 –
あなたはこれらの機能の違いを尋ねました。違いは文書化され、私はあなたに例を示しました。関数が(特定の状況下で)同じ結果を出すことができるということは、あなたの質問に対する答えに影響を与えません。 – Roland