Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 映射到列表并在应用函数时进行变异_R - Fatal编程技术网

R 映射到列表并在应用函数时进行变异

R 映射到列表并在应用函数时进行变异,r,R,我有一些数据,我正试图映射和执行一些计算。其中一个列表如下所示: [[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

我有一些数据,我正试图映射和执行一些计算。其中一个列表如下所示:

[[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 <- c("var1", "var2", "var3", "var4")
Scale_Me <- function(x){
  (x - min) / (max - min)
}
数据:


dat我们可以使用
map
循环查看
列表
,并使用
mutate\u在

library(dplyr)
library(purrr)
map(dat, ~ 
          .x %>%
                mutate_at(vars(names), list( scaled = ~ (.- min)/(max - min))))

如果需要使用
Scale\u Me
,则需要将列名作为参数传入,或者指定
.data

Scale_Me <- function(.data, x){
   (x - .data[["min"]]) / (.data[["max"]] - .data[["min"]])
  }

map(dat, ~ 
          {tmp <- .x
          tmp %>%
                mutate_at(vars(names), list( scaled = ~Scale_Me(.data = tmp, .)))})
Scale\u Me
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")))
library(dplyr)
library(purrr)
map(dat, ~ 
          .x %>%
                mutate_at(vars(names), list( scaled = ~ (.- min)/(max - min))))
Scale_Me <- function(.data, x){
   (x - .data[["min"]]) / (.data[["max"]] - .data[["min"]])
  }

map(dat, ~ 
          {tmp <- .x
          tmp %>%
                mutate_at(vars(names), list( scaled = ~Scale_Me(.data = tmp, .)))})