gpt4 book ai didi

在 R 中复制矩阵的行

转载 作者:行者123 更新时间:2023-12-05 01:10:06 26 4
gpt4 key购买 nike

假设我有一个矩阵 m和一个正整数向量 v ,我想要做的是得到一个新矩阵 m_new和每一行 m (比如 m[i, ] )由 v[i] 复制次在 m_new .例如:

m = matrix(1:6, nrow = 3)
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
v = c(3, 1, 2)

m_new应该:
     [,1] [,2]
[1,] 1 4 # m[1, ] is replicated by
[2,] 1 4 # v[1] = 3
[3,] 1 4 # times
[4,] 2 5
[5,] 3 6
[6,] 3 6

一个 for循环将使其适用于小案例:
m_new = matrix(0, sum(v), ncol(m))
k = 1
for(i in 1:nrow(m)){
for(j in k:(k+v[i]-1)){
m_new[j, ] = m[i, ]
}
k = k + v[i]
}

,但行号为 m在现实世界中通常很大。有没有什么有效的方法来做到这一点?

最佳答案

m[rep(1:nrow(m), times = v), ]
# [,1] [,2]
# [1,] 1 4
# [2,] 1 4
# [3,] 1 4
# [4,] 2 5
# [5,] 3 6
# [6,] 3 6

关于在 R 中复制矩阵的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20117458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com