如何用字符串变量动态重命名DataFrame列(dplyr)
修正后的代码及说明
方法一:使用!!与:=实现动态列名重命名
library(dplyr) New_Col_Name = 'Some_Name' dat = data.frame('a' = 3) dat %>% rename(!!New_Col_Name := a)
方法二:显式转换为列名符号(sym()+!!)
library(dplyr) New_Col_Name = 'Some_Name' dat = data.frame('a' = 3) dat %>% rename(!!sym(New_Col_Name) := a)
错误原因说明
原代码rename(a = New_Col_Name)的逻辑是将名为New_Col_Name的列重命名为a,但你的数据框里不存在该列,且你的需求是反向操作——把列a重命名为New_Col_Name变量存储的字符串。
dplyr中实现动态列名赋值,需要用:=替代普通的=,同时用!!(解引用运算符)把变量中的字符串转换成列名符号,这样才能正确识别动态的新列名。
内容的提问来源于stack exchange,提问作者Bogaso
相关产品推荐
相关产品推荐

