You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dplyr的mutate_at时如何向函数传参设置scale=FALSE

解决方案

你只需要在调用scale()时显式指定scale = FALSE参数即可,修改后的代码如下:

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

参数说明

  • scale()默认同时开启两个处理逻辑:center = TRUE(执行中心化,减去变量均值)、scale = TRUE(执行标准化,除以变量标准差),仅保留中心化关闭标准化的需求下,显式传入scale = FALSE即可。

补充优化建议

如果你的dplyr版本为1.0.0及以上,更推荐使用官方现在主推的across()语法替代已被软弃用的mutate_at,写法更简洁灵活:

centdata <- mydat %>%
  mutate(across(c(1:8, 14), ~scale(., scale = FALSE), .names = "{.col}_scaled"))

如果后续处理需要纯数值向量而非带属性的矩阵,可以调整函数写法避免类型报错:

~as.numeric(scale(., scale = FALSE))

内容的提问来源于stack exchange,提问作者Michael Weaver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:36:02