使用R中的循环顺序修改矩阵中的行值

sym*_*246 1 loops for-loop r matrix sequential

我真的不知道怎么说这个问题所以很容易理解,所以请耐心等待.

我有一个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 ...
Run Code Online (Sandbox Code Playgroud)

等等...

我需要根据向量中的项目编号重命名零列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 ...
Run Code Online (Sandbox Code Playgroud)

我的问题是能够指定第1列中的哪些行进行更改.我可以很容易地创建一个标记1的循环,data[1:h[1],1) <- 1但是当涉及剩下的数字时,我找不到一种方法来对R"选择接下来的X行,在我们已经改变之后",然后选择接下来的X行并改为__".

对不起,如果我没有解释我的问题太好了!

akr*_*run 6

我们可以使用'h'的元素rep来复制生成的序列(seq_along(h)).

m1[,1] <- rep(seq_along(h), h)
Run Code Online (Sandbox Code Playgroud)

根据 ?seq

'seq_along'和'seq_len'是两种常见情况的非常快速的原语....'seq_along'和'seq_len'返回一个整数向量