order() 函数奇怪的行为

  • 本文关键字:函数 order 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。

原因是什么?谢谢!

和我一起工作。

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

最新更新