如何在R中增加数组的大小

时间:2017-07-18 21:45:14

标签: arrays r for-loop

我有一个包含10,000行和2列的2D数组A.

在第一个实例中,我只想使用数组A的前200行。我做了以下操作: New_array = A [A(1:200),]

每次我想将行数增加50。 即在第二次迭代中,我希望能够访问250行矩阵A,第三次迭代300,依此类推,直到达到矩阵的原始大小。

我知道我必须创建一个for循环,但我很挣扎。任何帮助将受到高度赞赏

1 个答案:

答案 0 :(得分:1)

seq功能允许您指定序列中的间隔,如@ d.b的评论中所示。

seq(0, 20, by = 5)
[1]  0  5 10 15 20

然后可以使用seq的输出来驱动循环。这里i用作每次迭代中序列的端点。

for ( i in seq(5, 20, by = 5) ) {
    print(1:i) 
}

[1] 1 2 3 4 5
[1]  1  2  3  4  5  6  7  8  9 10
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

应用于您的示例,序列可用于矩阵的子集

# Example matrix

m <- 10000
n <- 2     
A <- matrix(1:(m*n), ncol = n)

head(A)
     [,1]  [,2]
[1,]    1 10001
[2,]    2 10002
[3,]    3 10003
[4,]    4 10004
[5,]    5 10005
[6,]    6 10006

# Iterate with a loop

jump <- 5  # I'm using 5 instead of 50

for ( i in seq(jump, m, by = jump) ) {
    print(paste("i =", i))
    print( A[1:i, ] )        # subset the matrix
    if ( i > 15 ) break      # limiting the output for readability
}

[1] "i = 5"
     [,1]  [,2]
[1,]    1 10001
[2,]    2 10002
[3,]    3 10003
[4,]    4 10004
[5,]    5 10005

[1] "i = 10"
      [,1]  [,2]
 [1,]    1 10001
 [2,]    2 10002
 [3,]    3 10003
 [4,]    4 10004
 [5,]    5 10005
 [6,]    6 10006
 [7,]    7 10007
 [8,]    8 10008
 [9,]    9 10009
[10,]   10 10010

[1] "i = 15"
      [,1]  [,2]
 [1,]    1 10001
 [2,]    2 10002
 [3,]    3 10003
 [4,]    4 10004
 [5,]    5 10005
 [6,]    6 10006
 [7,]    7 10007
 [8,]    8 10008
 [9,]    9 10009
[10,]   10 10010
[11,]   11 10011
[12,]   12 10012
[13,]   13 10013
[14,]   14 10014
[15,]   15 10015

[1] "i = 20"
      [,1]  [,2]
 [1,]    1 10001
 [2,]    2 10002
 [3,]    3 10003
 [4,]    4 10004
 [5,]    5 10005
 [6,]    6 10006
 [7,]    7 10007
 [8,]    8 10008
 [9,]    9 10009
[10,]   10 10010
[11,]   11 10011
[12,]   12 10012
[13,]   13 10013
[14,]   14 10014
[15,]   15 10015
[16,]   16 10016
[17,]   17 10017
[18,]   18 10018
[19,]   19 10019
[20,]   20 10020