6

read.csv で生データ (10000 行と 392 列) を R にインポートしました。それをマトリックス形式に変換する方法を考えています。ご助力ありがとうございます!

4

3 に答える 3

8

あなたの質問はおそらく StackOverflow に移行されます。ただし、答えは比較的簡単なので、提供します。read.csv は結果として data.frame を生成します。すべての値が同じ基本要素 (つまり変数) 型、つまり数値、文字などである場合、それらを Matrix データ構造で表すことができます。「as.matrix」関数を使用してこれを行うことができます。

例えば

mydataframe <- data.frame(a=c(1,2),b=c(2,3))    
mymatrix <- as.matrix(mydataframe)
于 2013-01-29T21:22:04.700 に答える
6

データが によって読み取られread.csvたが、実際には と一致している場合は、最初matrixに を使用scanして、おそらくskip=1ヘッダー行をスキップするために を使用します。

m = matrix(scan("file.csv", what=numeric(), skip=1), nrow=392)

scan は、単純な構造のデータの場合、read.csv と比較して非常に高速です。

于 2013-01-30T01:01:45.237 に答える
5

の代替as.matrix()は ですdata.matrix()。これには、行列に変換するときに因子変数の数値 (コード化) 情報を保持するという利点があります。検討:

d <- data.frame(1:10, letters[1:10])
as.matrix(d)
data.matrix(d)

> as.matrix(d)
      X1.10 letters.1.10.
 [1,] " 1"  "a"          
 [2,] " 2"  "b"          
 [3,] " 3"  "c"          
 [4,] " 4"  "d"          
 [5,] " 5"  "e"          
 [6,] " 6"  "f"          
 [7,] " 7"  "g"          
 [8,] " 8"  "h"          
 [9,] " 9"  "i"          
[10,] "10"  "j"          
> data.matrix(d)
      X1.10 letters.1.10.
 [1,]     1             1
 [2,]     2             2
 [3,]     3             3
 [4,]     4             4
 [5,]     5             5
 [6,]     6             6
 [7,]     7             7
 [8,]     8             8
 [9,]     9             9
[10,]    10            10

テキスト ラベルを持つ因子が存在すると、行列キャスト全体as.matrix()が文字行列としてレンダリングされるのに対しdata.matrix()、因子ラベルを内部の数値コードに置き換えることでデータの数値的性質が保持されることに注意してください。

于 2013-01-29T22:19:47.433 に答える