Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在R中增加数组的大小_Arrays_R_For Loop - Fatal编程技术网

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

Arrays 如何在R中增加数组的大小,arrays,r,for-loop,Arrays,R,For Loop,我有一个包含10000行和2列的二维数组 首先,我只想使用数组a的前200行。我执行了以下操作: 新的_数组=A[A1:200,] 每次我都想把行数增加50行。 i、 e.在第二次迭代中,我想访问矩阵A的250行,第三次迭代300行,依此类推,直到我达到矩阵的原始大小 我知道我必须创建一个for循环,但我很挣扎。非常感谢您提供的任何帮助seq函数允许您按顺序指定间隔,如@d.b的注释所示 seq(0, 20, by = 5) [1] 0 5 10 15 20 然后可以使用seq的输出来驱动

我有一个包含10000行和2列的二维数组

首先,我只想使用数组a的前200行。我执行了以下操作: 新的_数组=A[A1:200,]

每次我都想把行数增加50行。 i、 e.在第二次迭代中,我想访问矩阵A的250行,第三次迭代300行,依此类推,直到我达到矩阵的原始大小

我知道我必须创建一个for循环,但我很挣扎。非常感谢您提供的任何帮助

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

我认为这个问题将受益于样本数据。你能把它做成一个新的吗?比如说,你真的只是想要rbindA,emptyMatrix?一般情况下,不建议在vectors/arrays/data.frames中添加,因为它会进行完整复制;对于较小的对象,这很好,但是对于较大的对象,如果重复,您会感觉到效果。在这种情况下,我建议预先分配过多,并在完成时进行裁剪。lapplyseq200,NROWm,50,functioni m[1:I,]只需使用@d.b答案即可解决问题。