2017-07-18 6 views
0

私は10,000行2列の2D配列Aを持っています。 New_array = A [A(1:200)]配列のサイズを増やす方法R

Iが増加するたびに、私は、次た配列Aの最初の200行を使用する最初のインスタンスで

行の数は50です。 つまり、2番目の反復では、行列Aの250行、3番目の繰り返し300などにアクセスして、行列の元のサイズに到達するまでします。

私はforループを作成する必要があることを知っていますが、私は苦労しています。どんな助けも高く評価されます

+1

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

+3

'lapply(seq(200、NROW(m)、50)、function(i)m [1 :i、]) ' –

+0

@dbの答えを使うだけで問題は解決します。 – Wen

答えて

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 
関連する問題