使用 purrr::map() 命名新变量

问题描述 投票:0回答:1

我正在尝试学习一些基本的咕噜声。以这个玩具为例 - 当使用 map_df 创建当前变量名称时,我如何基本上将“rank”附加到当前变量名称?

library(tidyverse)
# generate some random data
dat <- tibble(
  x_1 = runif(10),
  x_2 = runif(10),
  x_3 = runif(10)
)
# find the ranks
dat <-  cbind(dat, dat |> map_df(rank))

目前已生产以下产品:

> dat
          x_1        x_2       x_3 x_1 x_2 x_3
1  0.37593751 0.20597008 0.4826491   6   3   4
2  0.01805845 0.05432019 0.6732073   1   1   7
3  0.39243407 0.47535664 0.9920948   7   7  10
4  0.06361097 0.21624621 0.4309171   2   4   3
5  0.53391717 0.28778664 0.9323643   9   6   9
6  0.24612385 0.83270359 0.2719036   4  10   1
7  0.47170853 0.26261303 0.3418129   8   5   2
8  0.33821497 0.57270648 0.7606502   5   9   8
9  0.85717819 0.48097921 0.4848689  10   8   5
10 0.11503862 0.07063651 0.6391102   3   2   6
r purrr
1个回答
0
投票

一般来说,这不会用 purrr 来完成,你只需直接用

mutate
across
来完成。

> dat |> 
+   mutate(
+     across(
+       .cols = everything(),
+       .fns = ~rank(.x),
+       .names = "{.col}_rank"
+     )
+   )
# A tibble: 10 × 6
      x_1   x_2     x_3 x_1_rank x_2_rank x_3_rank
    <dbl> <dbl>   <dbl>    <dbl>    <dbl>    <dbl>
 1 0.595  0.951 0.00114        9       10        1
 2 0.103  0.232 0.0796         2        1        2
 3 0.420  0.546 0.129          8        4        4
 4 0.302  0.774 0.995          7        8       10
 5 0.713  0.754 0.944         10        7        9
 6 0.182  0.483 0.908          5        3        8
 7 0.297  0.744 0.122          6        6        3
 8 0.150  0.640 0.804          4        5        6
 9 0.0747 0.820 0.199          1        9        5
10 0.145  0.470 0.849          3        2        7
© www.soinside.com 2019 - 2024. All rights reserved.