2016-07-26 8 views
0

誰もがRコードを構築する方法を手伝ってくれます。私は偶数の位置にあるベクトルから要素を取得したい。どのように偶数の位置(2,4,6,8など)にあるベクトルから要素を取得するR

画像は、リスト全体を含み、iが偶数位置(2,4,6,8など)にある要素を選択する必要があります。

+4

も参照しhttp://stackoverflow.com/questions/5237557/extracting-every-nth-ベクトルの要素 – patrickmdnet

+5

別のほとんどのdup:http://stackoverflow.com/questions/13461829/r-how-to-list-every-other-element – patrickmdnet

答えて

2

我々はseq

winners[seq(2, length(winners), by = 2)] 

を使用するか、使用することができます%%

winners[seq_along(winners) %%2 == 0] 
+5

もう一度私は暗黙の暗黙の変換に反対することを強く勧めます。 '!foo %% 2'の代わりに' foo %% 2 == 0'と書くことにします。しかし、このアプローチは、実際に私が使用するソリューションであり、最も論理的であるとわかります。 –

+2

コンラッドが約 –

+3

@DavidArenburgの場合、コードゴルフは許されません。codegolf.stackexchange.comのみ;-)私の名前を「コンラッドノゴルフ」に変更する必要があるかもしれません。 –

4
二つの観察が、これを解決するために組み合わせることができます

  1. 論理インデックスはあなたがベースの要素を選択することができます条件:

    c(1, 2)[c(TRUE, FALSE)] 
    

    は、最初の要素を選択しますが、2番目の要素は選択しません。あなたの配列よりも短い

  2. インデックス配列の最後まで再生です:

    letters[c(TRUE, FALSE)] 
    

    は、

    letters[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, …)] 
    

    やピック、'a''c''e'と同じです

だから、あなただけ使用することができます。

winner[c(FALSE, TRUE)] 
0

あなたはこのためにコロン演算子を使用することができます。

winner[2*(1:(length(winner)/2))] 
関連する問題