在map_dbl之后命令没有给出正确的答案

时间:2017-07-27 20:20:00

标签: r tidyverse

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

数据框

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

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

2 个答案:

答案 0 :(得分:0)

默认情况下,orderdecreasing = FALSE。这意味着它提供升序顺序。要从最高层向下获取订单,我们可以

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

答案 1 :(得分:0)

R中的

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

例如:

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

您正在寻找等级返回向量中值的示例等级

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