鉴于下面的矩阵:地划分矩阵了它的中心
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