R に以下のような行列があるとします。
1,3 7,1 8,2
次のようなマトリックスを作成するコードをどのように記述しますか。
1,3 1,3 1,3 7,1 8,2 8,2
正しい .column 値に基づいて行を繰り返す場所は? 実際には2よりも多くの行を持つマトリックスがあることに注意してください
# construct your initial matrix
x <- matrix( c( 1 , 3 , 7 , 1 , 8 , 2 ) , 3 , 2 , byrow = TRUE )
# take the numbers 1 thru the number of rows..
1:nrow(x)
# repeat each of those elements this many times
x[ , 2 ]
# and place both of those inside the `rep` function
rows <- rep( 1:nrow(x) , x[ , 2 ] )
# ..then return exactly those rows!
x[ rows , ]
# or save into a new variable
y <- x[ rows , ]
元のマトリックスは次のとおりです。
a<-matrix(c(1,7,8,3,1,2),3,2)
これにより、最初の列が作成されます。
rep(a[,1],times=a[,2])
これにより、2 番目の列が作成されます。
rep(a[,2],times=a[,2])
これらを cbind と組み合わせます。
cbind(rep(a[,1],times=a[,2]),rep(a[,2],times=a[,2]))
[,1] [,2]
[1,] 1 3
[2,] 1 3
[3,] 1 3
[4,] 7 1
[5,] 8 2
[6,] 8 2