假设我们有一个5*5 (25个元素)的矩阵
m<-matrix(1:25,5,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 21
[2,] 2 7 12 17 22
[3,] 3 8 13 18 23
[4,] 4 9 14 19 24
[5,] 5 10 15 20 25我想从矩阵“m”生成不同尺寸的大矩阵,例如5*8,现在我的新矩阵的第二列必须与第一列重叠,以此类推。
因此,较大的维数(例如,g,5*8)矩阵应该是这样的:(这只是一个例子,不确定移位量是否正确)。
[,1] [,2] [,3] [,4] ……………………[,8]
[1,] 1 4 7 10 …………………… 19
[2,] 2 5 8 11 …………………… 20
[3,] 3 6 9 12 …………………… 21
[4,] 4 7 10 13 …………………… 22
[5,] 5 8 11 14 …………………… 23 事实上,在每一列中,为了防止到达原始矩阵的最后一个元素并产生NA值,我们将返回到最后一列的一些元素。请有人知道如何创建这么大的矩阵吗?
对我来说最困难的部分是计算与较大矩阵的大小有关的移位值的数量。较大的矩阵必须涵盖原始矩阵的几乎所有元素。(错过一些最后的元素是可以的)谢谢
发布于 2014-05-30 02:56:32
覆盖范围的最大效率是:(重叠的最佳值)
> overlap<-ceiling(rows*(1-length(dna1)/(cols*rows)))+round(rows/cols)发布于 2014-05-27 10:50:56
我不知道你想要什么,但这可能会有帮助。
rows <- 5
cols <- 8
overlap <- 1
matrix(rep(seq(1,cols)*(rows-overlap),each=rows)+seq(1,rows)-(rows-overlap),nrow=rows)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 5 9 13 17 21 25 29
[2,] 2 6 10 14 18 22 26 30
[3,] 3 7 11 15 19 23 27 31
[4,] 4 8 12 16 20 24 28 32
[5,] 5 9 13 17 21 25 29 33
overlap <- 2
matrix(rep(seq(1,cols)*(rows-overlap),each=rows)+seq(1,rows)-(rows-overlap),nrow=rows)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 4 7 10 13 16 19 22
[2,] 2 5 8 11 14 17 20 23
[3,] 3 6 9 12 15 18 21 24
[4,] 4 7 10 13 16 19 22 25
[5,] 5 8 11 14 17 20 23 26
overlap <- 3
matrix(rep(seq(1,cols)*(rows-overlap),each=rows)+seq(1,rows)-(rows-overlap),nrow=rows)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 3 5 7 9 11 13 15
[2,] 2 4 6 8 10 12 14 16
[3,] 3 5 7 9 11 13 15 17
[4,] 4 6 8 10 12 14 16 18
[5,] 5 7 9 11 13 15 17 19https://stackoverflow.com/questions/23885726
复制相似问题