【发布时间】:2020-07-17 06:59:25
【问题描述】:
我想转换我的数据,但我不太确定哪种方法最好。因此,我使用包“bestNormalize”。
它在数据框的一列上运行良好,但是我有两个数据框的列表(每个数据框有 9 列),我想将函数“bestNormalize”应用于每一列。我尝试映射,但它不起作用。
此外,我想将包的其他函数(数据转换,例如使用函数“yeojohnson”)与我将“bestNormalize”函数应用于每个数据帧的每一列的方式相同。
有人知道这是如何工作的吗?提前致谢。
install.packages("bestNormalize")
library(bestNormalize)
install.packages("purrr")
library(purrr)
# Data
a <- data.frame(
met1 = rnorm(n = 100, mean = 0, sd = 1),
met2 = rnorm(n = 100, mean = 0, sd = 1),
met3 = rnorm(n = 100, mean = 0, sd = 1),
met4 = rnorm(n = 100, mean = 0, sd = 1),
met5 = rnorm(n = 100, mean = 0, sd = 1),
met6 = rnorm(n = 100, mean = 0, sd = 1),
met7 = rnorm(n = 100, mean = 0, sd = 1),
met8 = rnorm(n = 100, mean = 0, sd = 1),
met9 = rnorm(n = 100, mean = 0, sd = 1)
)
y <- data.frame(
met1 = rnorm(n = 100, mean = 0, sd = 1),
met2 = rnorm(n = 100, mean = 0, sd = 1),
met3 = rnorm(n = 100, mean = 0, sd = 1),
met4 = rnorm(n = 100, mean = 0, sd = 1),
met5 = rnorm(n = 100, mean = 0, sd = 1),
met6 = rnorm(n = 100, mean = 0, sd = 1),
met7 = rnorm(n = 100, mean = 0, sd = 1),
met8 = rnorm(n = 100, mean = 0, sd = 1),
met9 = rnorm(n = 100, mean = 0, sd = 1)
)
my_list <- list(a, y)
# Works:
bestNormalize::bestNormalize(my_list[[1]]$met1)
# Does not work:
stand_dat_men <- my_list %>% purrr::map(~mutate_at(.x, .vars = vars(met1:met9), ~bestNormalize(.)))
【问题讨论】:
标签: r list transformation purrr