order()函数奇怪的行为

时间:2017-08-02 11:44:17

标签: r

我在order()函数中遇到了一些奇怪的行为。 从这段代码中可以看出2个数据集(训练和测试):

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 个答案:

答案 0 :(得分: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