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)]) |
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).
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