如何去除R语言数据框缩放后列名的特殊字符[,1]?
解决scale处理后列名带[,1]的dplyr方案
问题根源是scale()函数返回的是矩阵对象,用mutate(across(...))处理后,数值列会被转为矩阵类型,列名自动添加[,1]后缀。下面提供两种贴合dplyr风格的解决方法:
方法一:scale时转为向量(从根源避免后缀)
直接在across里把scale的结果转成向量,不会生成矩阵,列名保持原样:
df <- df %>% mutate(across(where(is.numeric), ~as.vector(scale(.x))))
方法二:用rename_with批量修改已生成的列名
如果已经完成scale处理,用dplyr的rename_with工具批量清理列名,适配管道流风格:
df <- df %>% rename_with(~sub("\\[.*$", "", .x), where(is.numeric))
这里where(is.numeric)精准定位数值列,正则\\[.*$匹配从[开始到末尾的所有字符并替换为空,彻底去掉[,1]后缀。
内容的提问来源于stack exchange,提问作者thole
相关产品推荐
相关产品推荐

