鑑於下面的矩陣:地劃分矩陣了它的中心
set.seed(1)
x <- matrix(rnorm(15),5,3)
[,1] [,2] [,3]
[1,] -0.6264538 -0.8204684 1.5117812
[2,] 0.1836433 0.4874291 0.3898432
[3,] -0.8356286 0.7383247 -0.6212406
[4,] 1.5952808 0.5757814 -2.2146999
[5,] 0.3295078 -0.3053884 1.1249309
我想與相同數量的行的作爲x
提供一個矢量與和1之間的整數值的x
列數,例如
split_vector = c(1, 2, 3, 1, 2)
和應用的操作的是「拆分矩陣x
成三個矩陣」,每個的大小相同的x
。第一個包含split_vector
中相應索引左側每行中的所有列,第二個包含索引在split_vector
中給出的條目,第三個包含所有其他條目。例如,分別表示這些矩陣作爲M1, M2, M3
,則:
M2 <- matrix(rep(F, prod(dim(x))), ncol = ncol(x))
M2[cbind(seq_len(nrow(x)), split_vector)] <- T
M2[M2] <- x[M2] # very naughty coercion here
> M2
[,1] [,2] [,3]
[1,] -0.6264538 0.0000000 0.0000000
[2,] 0.0000000 0.4874291 0.0000000
[3,] 0.0000000 0.0000000 -0.6212406
[4,] 1.5952808 0.0000000 0.0000000
[5,] 0.0000000 -0.3053884 0.0000000
我對所有這些矩陣,但我還沒有產生的時候對應的'M1'和'M3' – Alex
有什麼問題你目前的方法來創建M2的答案? – A5C1D2H2I1M1N2O1R2T1
我不知道這是否是最有效的方式,除此之外,最好使用類似'split'的方法創建所有這些矩陣。 – Alex