2016-05-02 13 views
0

アイテムのリストを反復して現在の反復番号を取得したいとします。これは簡単な方法ですか?forループの最初の反復を特定します。

これは私の(例)ループです:

loopit <- c('happ','goof','funk') 
str <- '' 
for (l in loopit){ 
    print(paste0(l,'y')) 
} 

それは手動で反復カウンタを構築するのは簡単です:

i <- 1 
for (l in loopit){ 
    if(i==1){ 
    print(paste0('so ',l,'y!!!')) 
    }else{ 
    print(paste0(l,'y')) 
    } 
    i <- i + 1 
} 

は、現在の反復数を取得するために、よりエレガントな、より直接的な方法はあります?

+0

あなたは 'のための(I seq_alongで(loopit)){ IF(I == 1){プリント(paste0( 'そう'、loopit [i]は、Y 'のようなseq_along'を使用することができます! ! '))} else {print(paste0(loopit [i]、' y '))} } 'これはあなたが望むほどエレガントではないかもしれません。 – Zero

+0

なぜループですか? paste0(loopit [2:length(loopit)]、 "y")) ' – zx8754

+0

seq_along - ありがとう!ありがとう!はい、あなたは正しいです、なぜこの愚かな例でループしますか?より一般的な問題のほんの一例に過ぎません。リストのループ中に現在の反復番号を取得する直接的な方法はありませんか? – drosophilus

答えて

1

この具体例では、反復回数を知る必要はありません。多分あなたの本当の問題にも同じです。この例を参照してください。

foo <- function(x) { 
    print(paste0('so ', head(x, 1), 'y!!!')) 
    for (l in tail(x, -1)) print(paste0(l, 'y')) 
} 

foo(loopit) 
+0

あなたのシェアに感謝します。上記のように、この例では現在の反復は必要ありません。これは説明のためのものです。より複雑なコンテキストで解決策が必要です – drosophilus

+0

複雑なコンテキストでイテレータを本当に知る必要がありますか?最初の要素に対しては常に1つのプロシージャを実行し、残りのプロセスに対しては別のプロセス(ループなど)を実行できます。 – djhurio

関連する問題