如何根据值在矩阵上移动行水平

发布于 2025-01-26 12:08:44 字数 453 浏览 1 评论 0原文

我目前有两个矩阵:

      [,1]
[1,]    0
[2,]    5
[3,]    1

并且

      [,1] [,2] [,3]
[1,]    0    0    1
[2,]    0    9    9
[3,]    1    1    1

可以在第一个矩阵上的数字逐步向右移动行,并且所有空站点都可以完成0?结果就是这样:

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

I currently have two matrix:

      [,1]
[1,]    0
[2,]    5
[3,]    1

and

      [,1] [,2] [,3]
[1,]    0    0    1
[2,]    0    9    9
[3,]    1    1    1

it is possible to move rows automatically horizontal to the right by step of number on first matrix and all empty site complete 0? The result will be like that:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷心人i 2025-02-02 12:08:44

您可以使用mapply() append()

t(mapply(append, asplit(mat2, 1), mat1,
         MoreArgs = list(x = rep(0, max(mat1)))))

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
# [1,]    0    0    1    0    0    0    0    0
# [2,]    0    0    0    0    0    0    9    9
# [3,]    0    1    1    1    0    0    0    0

数据
mat1 <- matrix(c(0, 5, 1))
mat2 <- matrix(c(0, 0, 1, 0, 9, 1, 1, 9, 1), 3)

You can use mapply() with append():

t(mapply(append, asplit(mat2, 1), mat1,
         MoreArgs = list(x = rep(0, max(mat1)))))

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
# [1,]    0    0    1    0    0    0    0    0
# [2,]    0    0    0    0    0    0    9    9
# [3,]    0    1    1    1    0    0    0    0

Data
mat1 <- matrix(c(0, 5, 1))
mat2 <- matrix(c(0, 0, 1, 0, 9, 1, 1, 9, 1), 3)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文