У меня есть некоторые данные, которые я пытаюсь отобразить и выполнить некоторые вычисления. Один из списков выглядит так:
[[6]]
# A tibble: 6 x 8
var1 var2 var3 var4 mean sd min max
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 30 16 27 74.7 39.1 21.0 1 165
2 28 12 18 74.3 39.1 21.0 1 165
3 25 8 12 73.8 39.1 21.0 1 165
4 33 13 20 73.4 39.1 21.0 1 165
5 48 29 32 73.0 39.1 21.0 1 165
6 59 37 47 72.6 39.1 21.0 1 165
У меня также есть вектор с именем names
.
names <- c("var1", "var2", "var3", "var4")
Я хочу map
и применить эту функцию ко всем переменным в names
.
Scale_Me <- function(x){
(x - min) / (max - min)
}
Код, который у меня сейчас есть:
scaled_data <- map(
dat, ~mutate_at(
.,
vars(matches(paste(names, collapse = "|"))),
.funs = c("Scale_Me")
)
)
Ожидаемый результат будет:
# A tibble: 6 x 8
var1 var2 var3 var4 mean sd min max var1_scale var2_scale
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 30 16 27 74.7 39.1 21.0 1 165 xxx1 yyy1
2 28 12 18 74.3 39.1 21.0 1 165 xxx2 yyy2
3 25 8 12 73.8 39.1 21.0 1 165 xxx3 yyy3
4 33 13 20 73.4 39.1 21.0 1 165 ... ...
5 48 29 32 73.0 39.1 21.0 1 165
6 59 37 47 72.6 39.1 21.0 1 165 xxxN yyyN
Например, это работает для одного переменная var1
:
map(
dat, ~mutate(.,
var1_scaled = (var1 - min) / (max - min)
)
)
Данные:
dat <- list(structure(list(var1 = c(16, 52, 61, 56, 46, 30), var2 = c(7,
28, 30, 42, 31, 16), var3 = c(17, 36, 41, 41, 35, 27), var4 = c(76.7710873995529,
76.3531164480543, 75.935145496561, 75.5171745450677, 75.0992035935744,
74.6812326420812), mean = c(39.1029174452609, 39.1029174452609,
39.1029174452609, 39.1029174452609, 39.1029174452609, 39.1029174452609
), sd = c(21.0129393923035, 21.0129393923035, 21.0129393923035,
21.0129393923035, 21.0129393923035, 21.0129393923035), min = c(1,
1, 1, 1, 1, 1), max = c(165, 165, 165, 165, 165, 165)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
var1 = c(52, 61, 56, 46, 30, 28), var2 = c(28, 30, 42, 31,
16, 12), var3 = c(36, 41, 41, 35, 27, 18), var4 = c(76.3531164480543,
75.935145496561, 75.5171745450677, 75.0992035935744, 74.6812326420812,
74.2632616905879), mean = c(39.1063703943161, 39.1063703943161,
39.1063703943161, 39.1063703943161, 39.1063703943161, 39.1063703943161
), sd = c(21.008257789887, 21.008257789887, 21.008257789887,
21.008257789887, 21.008257789887, 21.008257789887), min = c(1,
1, 1, 1, 1, 1), max = c(165, 165, 165, 165, 165, 165)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
var1 = c(61, 56, 46, 30, 28, 25), var2 = c(30, 42, 31, 16,
12, 8), var3 = c(41, 41, 35, 27, 18, 12), var4 = c(75.935145496561,
75.5171745450677, 75.0992035935744, 74.6812326420812, 74.2632616905879,
73.8452907390946), mean = c(39.0972317671854, 39.0972317671854,
39.0972317671854, 39.0972317671854, 39.0972317671854, 39.0972317671854
), sd = c(21.0078807907002, 21.0078807907002, 21.0078807907002,
21.0078807907002, 21.0078807907002, 21.0078807907002), min = c(1,
1, 1, 1, 1, 1), max = c(165, 165, 165, 165, 165, 165)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
var1 = c(56, 46, 30, 28, 25, 33), var2 = c(42, 31, 16, 12,
8, 13), var3 = c(41, 35, 27, 18, 12, 20), var4 = c(75.5171745450677,
75.0992035935744, 74.6812326420812, 74.2632616905879, 73.8452907390946,
73.4273197876013), mean = c(39.083515262499, 39.083515262499,
39.083515262499, 39.083515262499, 39.083515262499, 39.083515262499
), sd = c(21.0046980738339, 21.0046980738339, 21.0046980738339,
21.0046980738339, 21.0046980738339, 21.0046980738339), min = c(1,
1, 1, 1, 1, 1), max = c(165, 165, 165, 165, 165, 165)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
var1 = c(46, 30, 28, 25, 33, 48), var2 = c(31, 16, 12, 8,
13, 29), var3 = c(35, 27, 18, 12, 20, 32), var4 = c(75.0992035935744,
74.6812326420812, 74.2632616905879, 73.8452907390946, 73.4273197876013,
73.009348836108), mean = c(39.065243711307, 39.065243711307,
39.065243711307, 39.065243711307, 39.065243711307, 39.065243711307
), sd = c(21.0044169232859, 21.0044169232859, 21.0044169232859,
21.0044169232859, 21.0044169232859, 21.0044169232859), min = c(1,
1, 1, 1, 1, 1), max = c(165, 165, 165, 165, 165, 165)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
var1 = c(30, 28, 25, 33, 48, 59), var2 = c(16, 12, 8, 13,
29, 37), var3 = c(27, 18, 12, 20, 32, 47), var4 = c(74.6812326420812,
74.2632616905879, 73.8452907390946, 73.4273197876013, 73.009348836108,
72.5913778846148), mean = c(39.053170538267, 39.053170538267,
39.053170538267, 39.053170538267, 39.053170538267, 39.053170538267
), sd = c(21.0039330348987, 21.0039330348987, 21.0039330348987,
21.0039330348987, 21.0039330348987, 21.0039330348987), min = c(1,
1, 1, 1, 1, 1), max = c(165, 165, 165, 165, 165, 165)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame")))