如何对数据框中的行进行排序以获得r中某些列中的最大净值

How to order rows in data frame for maximun net values in some columns in r

我有这个数据框

a <- c("5", 7, 9, "11")
b <- c("-8", "-10", -3, -1)
c <- c(-4, -1, "-6", "3")
df <- data.frame(a,b,c)
    a        b       c
1   5       -8      -4
2   7       -10     -1
3   9       -3      -6
4   11      -1       3

然后我希望行按照其中的最大净值排序,与列无关。我的意思是,我期待这样的事情:

    a        b       c
4   11      -1       3
2   7       -10     -1
3   9       -3      -6
1   5       -8      -4



如您所见,它已排序,因为第一行的值为 11,第二行 (-10),第三行 (9),第四行 (-8)。

这个解决方案可行,但不是最优雅的解决方案

libray(dplyr)

df %>% 
  rowwise() %>% 
  mutate(max_row_value = max(abs(c_across(a:c)))) %>% 
  arrange(-max_row_value)

# A tibble: 4 x 4
# Rowwise: 
      a     b     c max_row_value
  <dbl> <dbl> <dbl>         <dbl>
1    11    -1     3            11
2     7   -10    -1            10
3     9    -3    -6             9
4     5    -8    -4             8

你可以得到绝对值的行最大值并排序。

df[order(-do.call(pmax, abs(df))), ]

#   a   b  c
#4 11  -1  3
#2  7 -10 -1
#3  9  -3 -6
#1  5  -8 -4