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

时间:2015-08-21 09:06:50

标签: r loops for-loop 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 ...

等...

我需要根据向量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&#34;选择下一个X行,之后我们已经更改过的&#34;,&#34;然后选择下一个X行并更改为__&#34;。

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

1 个答案:

答案 0 :(得分:6)

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

m1[,1] <- rep(seq_along(h), h)

根据?seq

  

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