Selecteer elk ander element uit een vector

Stel dat ik een vector had:

remove <- c(17, 18, 19, 20, 24, 25, 30, 31, 44, 45).

Hoe selecteer/extraheer ik elke tweede waarde in de vector? Zoals zo: 17, 19, 24, 30, 44

Ik probeer de functie seqte gebruiken: seq(remove, 2)maar het werkt niet helemaal.

Alle hulp wordt zeer op prijs gesteld.


Antwoord 1, autoriteit 100%

remove[c(TRUE, FALSE)]

zal het lukken.


Hoe het werkt?

Als logische vectoren worden gebruikt voor indexering in R, worden hun waarden hergebruikt als de indexvector korter is dan de vector die de waarden bevat.

Hier bevat de vector removetien waarden. Als de indexvector c(TRUE, FALSE)wordt gebruikt, is het eigenlijke commando: remove[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)]

Daarom worden alle waarden met oneven indexnummers geselecteerd.


Antwoord 2, autoriteit 15%

remove[seq(1,length(remove),2)]

Antwoord 3, autoriteit 9%

Nog een alternatief:

> remove[seq_along(remove) %% 2 > 0]
[1] 17 19 24 30 44

Other episodes