2017-02-23 13 views
0

私はfor loopの出力をどのようにしてdata.frameとして保存することができますか? のは、mtcarsデータセットを使用して言わせて、私は次のようfor loopスクリプトがあります。Rのdata.frameとしてforループ出力を保存するには?

for (i in seq_len(nrow(mtcars))) { 
    if (i <= 30) { 

    next 
    } 

    print(mtcars[i,]) 
} 

       mpg cyl disp hp drat wt qsec vs am gear carb 
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8 
      mpg cyl disp hp drat wt qsec vs am gear carb 
Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2 

が、私はdataframeとしてoutputファイルにsaveに行きます場合、私は次のようなります。

output <- as.data.frame(c()) 
    for (i in seq_len(nrow(mtcars))) { 
     if (i <= 30) { 

     next 
     } 

     output<- c(output,mtcars[i,]) 
    } 


    ### then the output is 

    > output 
    $mpg 
    [1] 15 

    $cyl 
    [1] 8 

    $disp 
    [1] 301 

    $hp 
    [1] 335 

    $drat 
    [1] 3.54 

    $wt 
    [1] 3.57 

    $qsec 
    [1] 14.6 

    $vs 
    [1] 0 

    $am 
    [1] 1 

    $gear 
    [1] 5 

    $carb 
    [1] 8 

    $mpg 
    [1] 21.4 

    $cyl 
    [1] 4 

    $disp 
    [1] 121 

    $hp 
    [1] 109 

    $drat 
    [1] 4.11 

    $wt 
    [1] 2.78 

    $qsec 
    [1] 18.6 

    $vs 
    [1] 1 

    $am 
    [1] 1 

    $gear 
    [1] 4 

    $carb 
    [1] 2 

私が知っています単純なインデックスoutput <- mtcars[-(1:30), ]が、これは私の実際の生活状況(これはもっと複雑です)の解決策ではありません。私は本当に私が望むことをするためにループが必要です。

+0

を使用している()あなたはdata.framesのリストを連結しています。 c()の代わりにcbind()を使用すると、 –

+0

@Moody_Mudskipperが欲しいと思っています。何を意味するのか、そしてどこでそれを行う必要があるのか​​を明確にするためのコードを書いてください。コメントはtnx – Daniel

+0

@jogo、tnxですが、参考にはなりません!私はこれを知っていた、ポイントはどのようにループでそれを行うと、これは例のバディと同じです! :) – Daniel

答えて

1

ここでは、コードに最も似ている解決策があります。
ポイントは、Cを使用することにより初期化(インデックス...[NULL, ])と機能rbind()

output <- mtcars[NULL,] 
for (i in seq_len(nrow(mtcars))) { 
    if (i <= 30) { 
     next 
    } 
    # ... 
    output <- rbind(output, mtcars[i, ]) 
} 
関連する問題