使用scale()函数后如何保留数据框的原始列名?
解决dplyr标准化后view()列名带
[,1]的问题 问题根源:
scale()函数返回的是矩阵类型,控制台打印时R会自动简化显示,但view()会识别矩阵结构,因此给列名加上[,1]标记。解决方案:在
across()内部把scale()的结果转成向量,消除矩阵结构就能保留原始列名,两种常用写法:用
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))))直接提取矩阵第一列(scale返回的矩阵仅含一列):
df <- df %>% mutate(across(-grup_int, ~scale(.x)[,1]))
验证:修改后再调用
view(df),列名就会保持原始名称,不会出现[,1]后缀。
内容的提问来源于stack exchange,提问作者Javier Hernando
相关产品推荐
相关产品推荐

