2017-08-02 60 views
0

我遇到了order()函數的一些奇怪行爲。 這是2個集(訓練和測試),從這個代碼:order()函數奇怪的行爲

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,] 

當我嘗試通過訂購train.set

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

這一切都正確,但與第二個數據集,這不是好: 前排序:

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

排序後:

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

這是不正確的排序和很多意想不到的NA。

是什麼原因?謝謝!

+1

不要你的意思'順序(test.set $ noise.Y)'之後是連續的? –

+0

不,它匹配: >長度(test.set $ noise.Y);長度(test.set $ noise.Rec) [1] 40 [1] 40 – Aggle

+0

能否請您提供一個[最小的和可重複] (https://stackoverflow.com/q/5963269/3250126)例如? – loki

回答

0

和我一起工作。

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 

請注意,如果您希望rownames來排序,你可以根本就

row.names(test.set) <- NULL