No.02944 Re: R :数値行列のエラー 【青木繁伸】 2007/03/07(Wed) 12:58
R のオブジェクトがどの種類のものであるかを確認するには,class 関数を使うと良いでしょう。
データファイルの中身は,以下のようなものだったのでしょう。X1,X2これを,read.csv で読むと,データフレームになるんです。見かけは行列と似ていますが,あなたが経験したようなエラーが出ることがあります。つまり,データフレームは処理によっては行列とは区別される。
1,5
3,7
6,4
5,3
8,3> x <- read.csv("data.csv", header=TRUE)以上
> x # 表示してみると,行列のように見えるが
X1 X2
1 1 5
2 3 7
3 6 4
4 5 3
5 8 3
> class(x) # x が何者であるかを調べると,データフレームであることが判明する
[1] "data.frame"
> x2 <- as.matrix(x) # これを行列にするには as.matrix 関数を使う
> x2 # x2 の見かけは,x と変わりがないように見えるが
X1 X2
1 1 5
2 3 7
3 6 4
4 5 3
5 8 3
> class(x2) # x2 は行列だと判明する
[1] "matrix"
> y <- c(4,3) # y がベクトルだと,
> x %*% y # データフレームとベクトルの掛け算はできないが,
以下にエラーx %*% y : 数値行列またはベクトルが要求されます
> x2 %*% y # 行列に直したものとベクトルの掛け算は当たり前だが,できる
[,1]
1 19
2 33
3 36
4 29
5 41
No.02945 Re: R :数値行列のエラー 【mitsuhashi】 2007/03/07(Wed) 13:46
青木先生,ありがとうございました。無事プログラムが動きました。データフレーム,class は勉強不足で今回初めて知りました。非常に勉強になりました。
● 「統計学関連なんでもあり」の過去ログ--- 040 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る