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
をサブセットするために使用することができ、私はこの質問には、サンプルデータの恩恵を受けるだろうと思います。 [再現可能な質問](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)にすることはできますか? (例えば、あなたは本当に 'rbind(A、emptymatrixhere)'を求めていますか?)一般的に、ベクトル/配列/ data.framesへの追加は完全なコピーを行うので、推奨されません。大きなオブジェクトの場合は、繰り返しても効果が感じられます。その場合は、前に余分に割り振り、完了したら切り取ることをお勧めします) – r2evans
'lapply(seq(200、NROW(m)、50)、function(i)m [1 :i、]) ' –
@dbの答えを使うだけで問題は解決します。 – Wen