5

Rでのみ1行の行列を持つことは可能ですか?

これが私のコードです:

   nas <- which(!is.na(y))   
   x <- x[nas,]
   y <- y[nas]

   ...
   data.frame(y,x)

アイデアは、ベクトル y と行列 x があるということです。Y にはいくつかの NA 値を含めることができます。これらの値のインデックスを見つけて、ベクトルと行列の両方から削除します。

後で、x で y を組み立てたいと思います。ただし、問題は、y に NA でない値が 1 つしかない場合です。これは、y から 1 要素を除くすべての要素を削除し、x から 1 行を除くすべてを削除する必要があることを意味します。私はそれが1行を含むフレームを返すことを期待していました:y x1 x2 ..、代わりに私は得る:

   y    x
1  0 12.0
2  0 14.8
3  0 14.2
4  0 14.8
5  0  2.0
6  0  4.0
7  0  1.0
8  0  2.0
9  0 26.0
10 0  4.0
11 0  6.0
12 0  2.0
13 0 16.0
4

2 に答える 2

24

行列または配列を可能な限り少ない次元数に強制変換するのdrop = FALSEを停止するように指定する必要があります。R詳細については、を参照?`[`してください。

x <- matrix(1:4,ncol=2)
x[1,]
## [1] 1 2
x[1,,drop=F]
##      [,1] [,2]
## [1,]    1    3
于 2012-09-26T12:29:03.410 に答える
3

確かに、Patrick Liのように、コメントに記載されていますが、vector()関数を使用して作成した場合はそうではありません。

それで:

R> matrix(1:4, nrow=1)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
R> matrix(1:4, ncol=1)
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
R> matrix(1:4, ncol=2)
     [,1] [,2]
[1,]    1    3
[2,]    2    4
R>     

の使用に関するその他のオプションについてはmatrix()、ヘルプページを参照してください。非常に基本的な問題(ヒント:)drop=FALSEの詳細については、RFAQを参照してください。

于 2012-09-26T12:29:19.843 に答える