R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Uniikit arvot vektorista

Joskus tulee tilanne, jollon tarvitsee erottaa vektorista uniikit arvot. Alla esimerkki miten se onnistuu muutamalla eri tavalla:

Vec <- c(1:100,1:10)
 
#1. tapa
Vec[! duplicated(Vec) & ! duplicated(Vec, fromLast=TRUE)]
 
#2. tapa
Vec[rowSums(outer(Vec, Vec, "=="))==1]
 
#3. tapa, ehkä selkein
setdiff(Vec, Vec[duplicated(Vec)])

2 Responses to “Uniikit arvot vektorista”

  • kovariantti kirjoitti:

    Eikö unique ole yksinkertaisin vaihtoehto? Kokeilemalla
    Vec<-c(1:10000,1:100) aikaa menee 0.004,6.680,0.004 sekuntia, uniquella alle 0.000. Pidentämällä ensimmäinen osa kymmenkertaiseksi aikaa menee 0.032,NA,0.032,0.016 sekuntia (kakkosvaihtoehto ei mene läpi, ymmärrettävästi).

  • Lauri Nikkinen kirjoitti:

    Voitko tarkentaa. Huomaa näiden lauseiden tuottamien tulosten ero:

    > (vektori < - c(1:10, 1:5)) [1] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 > unique(vektori)
    [1] 1 2 3 4 5 6 7 8 9 10
    > setdiff(vektori, vektori[duplicated(vektori)])
    [1] 6 7 8 9 10


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *