RStudio更新后mutate()+scale()返回矩阵且列名异常求助
问题分析与解决
问题根源:
scale()函数默认返回矩阵类型,更新后的dplyr包调整了mutate的行为——当赋值右侧为矩阵时,会将矩阵的每一列拆分为数据框的新列,而非将整个矩阵作为单列存储。由于scale返回的矩阵列名默认是NA,dplyr会自动将其重命名为...8这类名称,导致你预期的zscore列未正确生成。解决方法:把
scale的结果转换为向量即可,两种常用写法:# 方式1:用as.vector转换矩阵为向量 df <- df %>% group_by(participants) %>% mutate(zscore = as.vector(scale(answer)))# 方式2:提取矩阵的第一列(scale默认返回单列矩阵) df <- df %>% group_by(participants) %>% mutate(zscore = scale(answer)[, 1])关于更新的影响:并非RStudio本身更新导致,而是RStudio更新时可能同步更新了tidyverse/dplyr包。dplyr新版本对非原子向量(如矩阵)的处理逻辑更严格,旧版本会隐式将矩阵转为向量存储,现在则按矩阵列拆分,因此触发了警告和列名异常。
内容的提问来源于stack exchange,提问作者fy259
相关产品推荐
相关产品推荐

