使用dplyr批量重命名数据集列名时报错的原因是什么
代码错误原因
- 语法适配错误:dplyr的
rename()函数要求传入新列名 = 旧列名的键值对映射,仅适用于替换少量指定列名的场景,你传入的vars(everything())和公式写法不符合rename()的参数规范,才会触发类型为quosures的报错。 - 函数选择错误:批量替换全部列名的需求,应该使用dplyr专门提供的
rename_with()函数,而非rename()。 - 多余操作:你不需要对
newnames做转置操作,列名只需要传入一维字符向量即可,转置只会增加不必要的结构嵌套。
正确实现步骤
- 先从
newnames数据框中提取新列名的字符向量,假设你的新名称全部存在newnames的第一列:
newnames_vec <- as.character(newnames[[1]])
- 用
rename_with()完成全部列名替换:
olddata <- olddata %>% rename_with(.fn = ~newnames_vec, .cols = everything())
如果你的使用场景只是全量替换列名,基础R的colnames(olddata) <- newnames_vec写法更简洁高效,不需要硬套用dplyr语法。
内容的提问来源于stack exchange,提问作者Jakub Morze
相关产品推荐
相关产品推荐

