2017-08-02 1 views
0

Ich stieß auf seltsames Verhalten mit der order() Funktion. Es war 2 Datensätze (Ausbildung und Prüfung), von diesem Code:order() Funktion seltsames Verhalten

train.part <- 0.25 
train.ind <- sample.int(n=nrow(newdata), size=floor(train.part*nrow(newdata)), replace=FALSE) 
train.set <- newdata[train.ind,] 
test.set <- newdata[-train.ind,] 

Wenn ich versuche, train.set durch bestellen:

train.set <- newdata[train.ind,] 

Es ist alles in Ordnung, aber mit dem zweiten Datensatz, dann ist es nicht gut : vor dem Sortieren:

> test.set 
    noise.Y noise.Rec 
1 7.226370 86.23327 
2 3.965446 85.24321 
3 5.896981 84.70086 
4 4.101038 85.51946 
5 7.965455 85.46091 
6 8.329555 86.83667 
8 6.579297 85.59717 
9 7.392187 85.51699 
10 5.878640 86.95244 
... 

nach dem Sortieren:

> test.set<-test.set[order(noise.Y),] 
    > test.set 
      noise.Y noise.Rec 
    2  3.965446 85.24321 
    4  4.101038 85.51946 
    11  7.109978 87.44713 
... 
    NA   NA  NA 
    NA.1   NA  NA 
    50 17.009351 92.36286 
    NA.2   NA  NA 
    48 15.452493 92.09277 
    53 16.514639 91.57661 
    NA.3   NA  NA 
... 

Es war nicht richtig sortieren und viele unerwartete NAs.

Was ist der Grund? Vielen Dank!

+1

Sie nicht bedeuten kann, Sortierung 'Ordnung (test.set $ noise.Y)'? –

+0

Nein, es ist abgestimmt: > länge (test.set $ noise.Y); länge (test.set $ noise.Rec) [1] 40 [1] 40 – Aggle

+0

Könnten Sie bitte eine [minimal und reproduzierbar] (https://stackoverflow.com/q/5963269/3250126) Beispiel? – loki

Antwort

0

Funktioniert mit mir.

test.set <- test.set[order(test.set$noise.Y),] 
    noise.Y noise.Rec 
2 3.965446 85.24321 
4 4.101038 85.51946 
10 5.878640 86.95244 
3 5.896981 84.70086 
8 6.579297 85.59717 
1 7.226370 86.23327 
9 7.392187 85.51699 
5 7.965455 85.46091 
6 8.329555 86.83667 

Beachten Sie, dass, wenn Sie die rownames wollen in Folge sein, nachdem man hat einfach zu

row.names(test.set) <- NULL