使用 R 中的循环依次修改矩阵中的行值
Sequentially amending row values in a matrix using loop in R
我真的不知道怎么表达这个问题,所以很容易理解,所以请多多包涵。
我有一个 2 列矩阵,需要根据另一个矩阵修改第 1 列中的值,比如 h
。
例如,h
可能如下所示:h <- c(11,10,10,8,12)
我的数据矩阵如下所示:
[1,] 0 0
[2,] 0 0
[3,] 0 26
[4,] 0 44
[5,] 0 0
[6,] 0 65
[7,] 0 0
[8,] 0 0
[9,] 0 0
[10,] 0 28
[11,] 0 25
[12,] 0 0
[13,] 0 81
[14,] 0 0
[15,] 0 0 ...
等...
我需要根据向量 h
中的项目编号重命名零列。所以我需要行 1:11 被标记为 1,12:21 被标记为 2,22:31 被标记为 3 等等,像这样:
[1,] 1 0
[2,] 1 0
[3,] 1 26
[4,] 1 44
[5,] 1 0
[6,] 1 65
[7,] 1 0
[8,] 1 0
[9,] 1 0
[10,] 1 28
[11,] 1 25
[12,] 2 0
[13,] 2 81
[14,] 2 0
[15,] 2 0 ...
我的问题是能够指定要更改第 1 列中的哪些行。我可以很容易地创建一个循环来标记 1,data[1:h[1],1) <- 1
,但是当涉及到剩余的数字时,我找不到对 R "choose the next X rows, after the ones we've already changed"、"then select the next X rows and change to __".[=17= 说的方法]
抱歉,如果我没有很好地解释我的问题!
我们可以使用rep
复制由'h'的元素生成的序列(seq_along(h)
)。
m1[,1] <- rep(seq_along(h), h)
根据?seq
‘seq_along’ and ‘seq_len’ are very
fast primitives for two common cases.... ‘seq_along’ and ‘seq_len’ return an integer vector
我真的不知道怎么表达这个问题,所以很容易理解,所以请多多包涵。
我有一个 2 列矩阵,需要根据另一个矩阵修改第 1 列中的值,比如 h
。
例如,h
可能如下所示:h <- c(11,10,10,8,12)
我的数据矩阵如下所示:
[1,] 0 0
[2,] 0 0
[3,] 0 26
[4,] 0 44
[5,] 0 0
[6,] 0 65
[7,] 0 0
[8,] 0 0
[9,] 0 0
[10,] 0 28
[11,] 0 25
[12,] 0 0
[13,] 0 81
[14,] 0 0
[15,] 0 0 ...
等...
我需要根据向量 h
中的项目编号重命名零列。所以我需要行 1:11 被标记为 1,12:21 被标记为 2,22:31 被标记为 3 等等,像这样:
[1,] 1 0
[2,] 1 0
[3,] 1 26
[4,] 1 44
[5,] 1 0
[6,] 1 65
[7,] 1 0
[8,] 1 0
[9,] 1 0
[10,] 1 28
[11,] 1 25
[12,] 2 0
[13,] 2 81
[14,] 2 0
[15,] 2 0 ...
我的问题是能够指定要更改第 1 列中的哪些行。我可以很容易地创建一个循环来标记 1,data[1:h[1],1) <- 1
,但是当涉及到剩余的数字时,我找不到对 R "choose the next X rows, after the ones we've already changed"、"then select the next X rows and change to __".[=17= 说的方法]
抱歉,如果我没有很好地解释我的问题!
我们可以使用rep
复制由'h'的元素生成的序列(seq_along(h)
)。
m1[,1] <- rep(seq_along(h), h)
根据?seq
‘seq_along’ and ‘seq_len’ are very fast primitives for two common cases.... ‘seq_along’ and ‘seq_len’ return an integer vector