首页 > 解决方案 > order(x, na.last = FALSE) 的意外行为

问题描述

我正在尝试订购一个简单的数字向量,包括 NA。order在运行测试时,我遇到了该函数的一些意外行为。

第三行不是我所期望的:

order(c(3,5,4,NA))
[1] 1 3 2 4
order(c(3,5,4,NA), na.last = TRUE)
[1] 1 3 2 4
order(c(3,5,4,NA), na.last = FALSE)
[1] 4 1 3 2

对于最后一个结果,我希望 NA 在序列中排在第一位:

order(c(3,5,4,NA), na.last = FALSE)
[1] 2 4 3 1

类似于这两个“正确”的例子:

order(c(3,NA,5,4), na.last = FALSE)
[1] 2 1 4 3

order(c(NA,3,5,4), na.last = FALSE)
[1] 1 2 4 3

R version 3.5.2 (2018-12-20)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)

顺便说一句,我也尝试运行:

base::order(c(3,5,4,NA), na.last = FALSE)
[1] 4 1 3 2

我错过了什么?

标签: rbase

解决方案


推荐阅读