0

180*12Rに行と列を含む行列を作成しようとして12います。このようなものを作成するためのRの特定のコードがわかりません。

Column 1: 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,..................0
Column 2: 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,..................0
Column 3: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,..................0

電気ショック療法 Column12まで同じパターンで。誰かが私を助けることができますか?前もって感謝します。

4

3 に答える 3

3
apply(diag(12), 2, rep, each=12)

短い例:

apply(diag(3), 2, rep, each=2)
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    1    0    0
## [3,]    0    1    0
## [4,]    0    1    0
## [5,]    0    0    1
## [6,]    0    0    1

明示的なものがない、別の非常によく似た解決策apply

matrix(rep(diag(12), each=12), ncol=12)

これは、がそれぞれ0'で区切られた1のas.vector(diag(N))ベクトルであるために機能します。diag(3)、each = 2、ncol = 3の例は、上記の例と同じです。NN

于 2013-03-07T03:31:00.820 に答える
1

笑いのために、ここにmodel.matrix@MatthewLundbergの答えのバージョンがあります:

model.matrix( ~ rep(factor(1:3),each=2) - 1)

a <- rep(factor(1:3),each=2)
model.matrix( ~ a - 1)

  a1 a2 a3
1  1  0  0
2  1  0  0
3  0  1  0
4  0  1  0
5  0  0  1
6  0  0  1
attr(,"assign")
[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$a
[1] "contr.treatment"

またはすべてを1行で:

model.matrix( ~ rep(factor(1:3),each=2) - 1)
于 2013-03-07T04:11:53.267 に答える
1

そしてclass.indからのアプローチnnet

class.ind(rep(factor(1:3),each=2))
于 2013-03-07T04:15:57.447 に答える