2017-08-29 4 views
0

すべてが多次元配列であるMatlabとは異なり、RはベクトルとNx1行列(または1xN行列)を区別します。変数やオブジェクトがベクタか行列かどうかを判断する方法はありますか? class()関数はベクトル/行列内の要素の型を返すように見えますが、引数がベクトルであるか単一の列/行行列であるかはわかりません。MatlabberのN番目の試みはR:ベクトル対単一列/行行列

関連する質問として、Rはスカラー対配列またはベクトルを区別していますか? Matlabでは、スカラーは行列(次元1x1、または1x1x1x ... x1の多次元の意味)です。

+1

「is.vector」と「is.matrix」。 'is.vector(行列(c(1,2)、nrow = 1)) 'と比較して、' is.vector(c(1,2)) ')' – CPak

+0

ありがとう。そしてis.vector(1)はTRUEを返し、is.matrix(1)はfalseを返します。答え、CPakを投稿したいですか? – user36800

+2

Rのほとんどすべてがベクトルです。行列は次元属性を持つベクトルに過ぎません。 Rにスカラはありません – Roland

答えて

1

is.vectorおよびis.matrixはそれぞれ区別する。

is.vector(c(1,2)) 
# TRUE 

is.vector(matrix(c(1,2),nrow=1)) 
# FALSE 
+0

インデックスを使って行列から1列/行を抽出すると、行列ではなくベクトルが得られます: 'is.vector(myMatrix [、1])'は 'TRUE'を返します。 ; 'is.matrix(myMatrix [、1])'は 'FALSE'を返します。 'is.vector(myMatrix [1:2,1:2])'は 'FALSE'を返します。 'is.matrix(myMatrix [1:2,1:2])'がTRUEを返します。 – user36800

+0

Matlabから来ているので、想像に慣れるまでに時間がかかります。 – CPak

+0

はい...マトリックスインデックスによって返されるマクロオブジェクトのタイプは、インデックスに依存します。たとえ要素の型が全体にわたって同じであっても。 – user36800

関連する問題