library(dplyr)
df <- tibble(
a = rnorm(10),
b = rnorm(10),
c = rnorm(10),
d = rnorm(10)
)
df %>%
arrange(colnames(df) %>% tail(1) %>% desc())
我循环遍历数据帧列表。数据框中有不同的列,每个列的最后一列可能有不同的名称。
我需要按最后一列安排每个数据框。简单的情况看起来像上面的代码。
答案 0 :(得分:6)
使用arrange_at
和ncol
:
df %>% arrange_at(ncol(.), desc)
答案 1 :(得分:3)
如果我们需要arrange
列last
,请使用名称字符串
df %>%
arrange_at(vars(last(names(.))), desc)
或指定索引
df %>%
arrange_at(ncol(.), desc)
答案 2 :(得分:0)
新 dplyr 方式(我猜从 1.0.0 开始)将使用 across(last_col())
:
library(dplyr)
df <- tibble(
a = rnorm(10),
b = rnorm(10),
c = rnorm(10),
d = rnorm(10)
)
df %>%
arrange(across(last_col(), desc))
#> # A tibble: 10 x 4
#> a b c d
#> <dbl> <dbl> <dbl> <dbl>
#> 1 -0.283 0.443 1.30 0.910
#> 2 0.797 -0.0819 -0.936 0.828
#> 3 0.0717 -0.858 -0.355 0.671
#> 4 -1.38 -1.08 -0.472 0.426
#> 5 1.52 1.43 -0.0593 0.249
#> 6 0.827 -1.28 1.86 0.0824
#> 7 -0.448 0.0558 -1.48 -0.143
#> 8 0.377 -0.601 0.238 -0.918
#> 9 0.770 1.93 1.23 -1.43
#> 10 0.0532 -0.0934 -1.14 -2.08
> packageVersion("dplyr")
#> [1] ‘1.0.4’