0

以下は、私の大きなデータ ファイルの最初の数行です。

Symbol|Security Name|Market Category|Test Issue|Financial Status|Round Lot Size
AAC|Australia Acquisition Corp. - Ordinary Shares|S|N|D|100
AACC|Asset Acceptance Capital Corp. - Common Stock|Q|N|N|100
AACOU|Australia Acquisition Corp. - Unit|S|N|N|100
AACOW|Australia Acquisition Corp. - Warrant|S|N|N|100
AAIT|iShares MSCI All Country Asia Information Technology Index Fund|G|N|N|100
AAME|Atlantic American Corporation - Common Stock|G|N|N|100

私はデータを読みました:

data <- read.table("nasdaqlisted.txt", sep="|", quote='', header=TRUE, as.is=TRUE)

配列と行列を作成します。

d1 <- array(data, dim=c(nrow(data), ncol(data))) 
d2 <- matrix(data, nrow=nrow(data), ncol=ncol(data))

ただし、d1は配列でありd2、 は行列ですが、classmodeは同じです。

> class(d1)
[1] "matrix"
> mode(d1)
[1] "list"
> class(d2)
[1] "matrix"
> mode(d2)
[1] "list"

どうしてこれなの?

4

1 に答える 1

7

私は噛んで、問題についての私の理解を説明してみます。

問題を示すために大きなテスト ファイルは必要ありません。シンプルなdata.frame方法は次のとおりです。

test <- data.frame(var1=1:2,var2=letters[1:2])

> test
  var1 var2
1    1    a
2    2    b

data.frameaは単なるlist内部的なa であることに注意してください。

> is.data.frame(test)
[1] TRUE
> is.list(test)
[1] TRUE

ご想像のとおりのlistような構造で。

> str(test)
'data.frame':   2 obs. of  2 variables:
 $ var1: int  1 2
 $ var2: Factor w/ 2 levels "a","b": 1 2

> str(as.list(test))
List of 2
 $ var1: int [1:2] 1 2
 $ var2: Factor w/ 2 levels "a","b": 1 2

aまたは amatrixに対して呼び出しを指定すると、data.frame または list の要素で満たされた行列になります。data.framelist

result1 <- matrix(test)

> result1
     [,1]     
[1,] Integer,2
[2,] factor,2 

の構造をresult1見ると、まだ であることがわかりますがlist、現在は寸法だけになっています (以下の出力の最後の行を参照)。

> str(result1)
List of 2
 $ : int [1:2] 1 2
 $ : Factor w/ 2 levels "a","b": 1 2
 - attr(*, "dim")= int [1:2] 2 1

つまり、現在は amatrixと a の両方です。list

> is.matrix(result1)
[1] TRUE
> is.list(result1)
[1] TRUE

このオブジェクトから寸法を削除すると、 ではなくなり、matrixに戻りlistます。

dim(result1) <- NULL

> result1
[[1]]
[1] 1 2

[[2]]
[1] a b
Levels: a b

> is.matrix(result1)
[1] FALSE
> is.list(result1)
[1] TRUE

> str(result1)
List of 2
 $ : int [1:2] 1 2
 $ : Factor w/ 2 levels "a","b": 1 2
于 2012-08-09T11:48:20.917 に答える