【问题标题】:how to pass options to a function using dplyr mutate_at如何使用 dplyr mutate_at 将选项传递给函数
【发布时间】:2021-11-13 18:37:06
【问题描述】:

我想将数据框中的一组变量居中,但不标准化。我尝试了使用 mutate_at 执行此操作的代码,但缩放函数默认使用 scale = TRUE,我不知道如何将其设置为 scale = FALSE。 Tis 缩放了所需的变量,但除了居中之外还进行了标准化:

centdata <- mydat %>% 
mutate_at(.vars = c(1, 2, 3, 4, 5, 6, 7, 8, 14), 
.funs = list("scaled" = scale))

【问题讨论】:

  • 我推荐使用across´ instead of mutate_at`,因为它是一种不推荐使用的语法
  • at-command 的标签是关于 Hayes 命令集的。这不适用于这里。
  • 发布 R 问题时,请尝试包含一些适用于您的代码的数据。

标签: r function scale dplyr


【解决方案1】:

您可以在此处使用 purrr 样式公式或匿名函数。

library(dplyr)
cols <- c(1, 2, 3, 4, 5, 6, 7, 8, 14)

centdata <- mydat %>% 
  mutate_at(.vars = cols, 
            .funs = list("scaled" = ~scale(., scale = FALSE)))

由于mutate_at已被弃用,您可以使用across

centdata <- mydat %>% 
  mutate(across(cols, list("scaled" = ~scale(., scale = FALSE))))

在基础 R 中 -

mydat[paste0(names(mydat)[cols], '_scaled')] <- lapply(mydat[cols], scale, scale = FALSE)

scale 也可以直接作用于数据框。

mydat[paste0(names(mydat)[cols], '_scaled')] <- scale(mydat[cols])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-12
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多