【发布时间】:2019-02-08 19:17:40
【问题描述】:
我有一个从 1 到 105 的数字列表。我想移动到具有对角线值的下三角矩阵。但是,我不希望这个矩阵按行填充,而是我想要以下模式:
此矩阵中的数字是指我希望在矩阵中看到的列表 (x) 中的元素。例如,我的列表中的数字 64 应该位于矩阵的左下角。
现有的功能(如lower.tri 或matrix(x, byrow=TRUE) 似乎在这里不起作用,所以我有点迷茫如何处理这个问题。
x <- c(1:105)
编辑:
请注意,图像中的矩阵有“怪癖”。通过查看第 6 列和第 7 列可以最好地说明这些。第 7 行中的值从 27 到 70,第 8 行中的值从 33 到 71 等等。同样,事情发生在第 12 列和第 13 列之间,其中第 13 行中的值从 96 到 103,在第 14 行中从 102 到 104。
编辑2:
来自评论:我能想到的唯一真正的规则是每 6 列之后就会出现“怪异”。使用 13x13 矩阵而不是 70 它将是 64,使用 12x12 它将是 58,依此类推,所以它减少了 6。对于 14x14 矩阵,显然有 14 列,因此在第 6 列之后,分列会发生两次,在第 12 列之后。对于 19x19 矩阵,我们将出现 3 次分栏 - 在第 6、第 12 和第 18 之后。我提出这个是因为异常值会在每个分栏后开始
【问题讨论】:
-
几件事。只是为了清理语言,你有一个数字向量,而不是数字列表。其次,这不是下三角矩阵。在下三角形中,对角线向量全为零。你的不是。你提前知道方阵的大小吗?或者你想从你的向量计算,
x?这与这里的问题非常相似:stackoverflow.com/questions/30787317/… -
另外,您图片中的第 6 列和第 7 列之间发生了什么?为什么逐行模式会改变?准确吗?
-
亚当,感谢您在语言方面帮助我。我如何调用一个下对角矩阵,其中我确实在对角线上有值?我会提前知道方阵的大小。在这种情况下,它将是 14x14,但是,我正在努力达到一个点,通过知道我的数字向量中的元素数量,我可以找出方阵的宽度或长度。
-
维基百科下三角矩阵的定义与你原来的用法一致,@PauliusSatkus。 “如果主对角线以上的所有项都为零,则方阵称为下三角矩阵。”
-
亚当,是的,图片是准确的,在第 6 列和第 7 列之间以及第 12 列和第 13 列之间发生了“奇怪”的事情。这种格式正是我努力寻找解决方案的原因。否则,以下解决方案将起作用。