基于了解模式中的维度来创建矩阵

时间:2014-07-23 19:29:49

标签: r

我尝试以编程方式解决问题,但未成功。以下是一些生成

的示例
 cbind(1:12,13:2,3:14,15:4,5:16,17:6,7:18,19:8,9:20,21:10)

 cbind(1:11,12:2,3:13,14:4,5:15,16:6,7:17,18:8,9:19)

寻找此问题的一般解决方案。如果给出了列数和行数,程序应该输出矩阵。感谢。

2 个答案:

答案 0 :(得分:0)

m = embed(1:19, 9)
m[, seq(2, ncol(m), by=2)] = m[nrow(m):1, seq(2, ncol(m), by=2)]
m[,ncol(m):1]

产生

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    1   12    3   14    5   16    7   18    9
 [2,]    2   11    4   13    6   15    8   17   10
 [3,]    3   10    5   12    7   14    9   16   11
 [4,]    4    9    6   11    8   13   10   15   12
 [5,]    5    8    7   10    9   12   11   14   13
 [6,]    6    7    8    9   10   11   12   13   14
 [7,]    7    6    9    8   11   10   13   12   15
 [8,]    8    5   10    7   12    9   14   11   16
 [9,]    9    4   11    6   13    8   15   10   17
[10,]   10    3   12    5   14    7   16    9   18
[11,]   11    2   13    4   15    6   17    8   19

答案 1 :(得分:0)

您可以使用apply轻松完成。只需生成从列号开始向上计数y的矩阵列,并反转偶数列;

> x=5; y=7

> apply(t(1:x), 2, function(x) if(x%%2) x-1+1:y else x-1+y:1)

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    8    3   10    5
[2,]    2    7    4    9    6
[3,]    3    6    5    8    7
[4,]    4    5    6    7    8
[5,]    5    4    7    6    9
[6,]    6    3    8    5   10
[7,]    7    2    9    4   11