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

使用scale()函数后如何保留数据框的原始列名?

解决dplyr标准化后view()列名带[,1]的问题
  • 问题根源:scale()函数返回的是矩阵类型,控制台打印时R会自动简化显示,但view()会识别矩阵结构,因此给列名加上[,1]标记。

  • 解决方案:在across()内部把scale()的结果转成向量,消除矩阵结构就能保留原始列名,两种常用写法:

    1. 用as.vector()包裹scale():

      library(dplyr)
      # 排除分类变量grup_int处理其他列
      df <- df %>%
        mutate(across(-grup_int, ~as.vector(scale(.x))))
      # 或指定列范围(第3至52列)
      df <- df %>%
        mutate(across(3:52, ~as.vector(scale(.x))))
      
    2. 直接提取矩阵第一列(scale返回的矩阵仅含一列):

      df <- df %>%
        mutate(across(-grup_int, ~scale(.x)[,1]))
      
  • 验证:修改后再调用view(df),列名就会保持原始名称,不会出现[,1]后缀。

内容的提问来源于stack exchange,提问作者Javier Hernando

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:45:38