【发布时间】:2014-05-27 09:26:41
【问题描述】:
假设我们有一个 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,现在我的新矩阵的第二列必须与第一列重叠,依此类推。
所以更大的维度(例如 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 值。 请问有人知道如何创建这样一个更大的矩阵吗?
对我来说最难的部分是计算与较大矩阵大小有关的 SHIFT 值的数量。较大的矩阵必须覆盖原始矩阵的几乎所有元素。 (可以错过一些最后的元素) 谢谢
【问题讨论】:
-
试着解释你的逻辑以及你尝试过的代码块......
-
您要解决的问题是什么?正如建议的答案(和您自己的样本)所建议的那样,存在几乎无限可能的最终矩阵。您似乎唯一需要的就是
max(final_matrix) <= max(initial_matrix)并且按列排序是单调递增的。 -
我想找到最佳的重叠值,它使新矩阵的最后一个元素最接近原始矩阵的最后一个元素。这意味着选择较少的最佳值会产生 NA,而较高的值会忽略一些我们可以在更大矩阵中留出空间的元素。