我想从更大的矩阵创建3个矩阵.新矩阵应包含:
1st, 4th, 7th....旧矩阵的元素2nd, 5th, 8th....旧矩阵的元素3rd, 6th, 9th....旧矩阵的元素所以,如果我的矩阵看起来像这样:
m<-matrix(c(1:3),nrow=12, ncol=2)
[,1] [,2]
[1,] 1 1
[2,] 2 2
[3,] 3 3
[4,] 1 1
[5,] 2 2
[6,] 3 3
[7,] 1 1
[8,] 2 2
[9,] 3 3
[10,] 1 1
[11,] 2 2
[12,] 3 3
Run Code Online (Sandbox Code Playgroud)
我用这样的for循环尝试了它
for(i in 1:4){
m1<-m[i+3,]
m2<-m[i+4,]
m3<-m[i+5,]
}
Run Code Online (Sandbox Code Playgroud)
但这不仅不能给我第1 /第2 /第3行,而且也不会给我所有行.
必须有一种更优雅的方式来做到这一点.
利用R中索引的循环规则:
m[c(T, F, F),]
# [,1] [,2]
# [1,] 1 1
# [2,] 1 1
# [3,] 1 1
# [4,] 1 1
m[c(F, T, F),]
# [,1] [,2]
# [1,] 2 2
# [2,] 2 2
# [3,] 2 2
# [4,] 2 2
m[c(F, F, T),]
# [,1] [,2]
# [1,] 3 3
# [2,] 3 3
# [3,] 3 3
# [4,] 3 3
Run Code Online (Sandbox Code Playgroud)
当我们使用与矩阵的行数不同的向量索引矩阵时,这里具有较小长度的向量将循环直到它们的长度匹配,因此例如,第一种情况,实际的索引向量是扩展到c(T, F, F, T, F, F, T, F, F)将按预期获得第一,第四和第七行.第二种情况和第三种情况也是如此.
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |