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