map_dbl 后订单未给出正确答案

order not giving correct answer after map_dbl

想知道以下是否是错误...

数据框

df <- data.frame(Name=rep(letters[1:3],each=3), Value=c(20,40,35,70,80,90,10,20,30))

一些操作

library(tidyverse)
df1 <- split(df, df$Name) %>%
    map(., ~.x %>% arrange(desc(Value)))
df2 <- map_dbl(df1, ~head(.x$Value, 1))

--查看数据

head(df2)

 a  b  c 
40 90 30

str(df2)

Named num [1:3] 40 90 30
 - attr(*, "names")= chr [1:3] "a" "b" "c"

--BUG?

order(df2)
[1] 3 1 2

给出了错误的答案,但是

df2['a'] > df2['c']
TRUE

给出正确答案。我做错了什么吗?

默认情况下,orderdecreasing = FALSE。这意味着它给出 升序 顺序。要从最高处向下排序,我们可以这样做

order(df2, decreasing = TRUE)
# [1] 2 1 3
R 中的

order 将 return 原始列表中的排序位置 order returns 将其第一个参数重新排列为升序的排列或降序

例如:

Dat=data.frame(a=c(2,1,4,6,3),b=c(1,2,3,4,5))
order(Dat$a)
[1] 2 1 5 3 4
Dat[order(Dat$a),]
  a b
2 1 2
1 2 1
5 3 5
3 4 3
4 6 4

您正在寻找排名 Returns 向量中值的样本排名

rank(Dat$a)
[1] 2 1 4 5 3