代码之家  ›  专栏  ›  技术社区  ›  Bogaso

使用字符串变量重命名数据帧

  •  0
  • Bogaso  · 技术社区  · 2 年前

    我有以下代码

    library(dplyr)
    
    New_Col_Name = 'Some_Name'
    dat = data.frame('a' = 3)
    dat %>% rename(a = New_Col_Name)
    

    基本上,我试图用动态变量重命名 New_Col_Name .

    上述代码生成错误。你能帮我正确地写上面的代码吗?

    2 回复  |  直到 2 年前
        1
  •  1
  •   Konrad Rudolph    2 年前

    rename() 期望它的参数反过来,就像常规赋值一样。

    如果你想使用动态名称,你不能只是说 rename(new = old) ,因为这将尝试按字面意思使用变量名(即它将创建一个名为 new ). 要使用计算/动态名称,您需要使用 tidy evaluation with the := operator and interpolation :

    dat %>% rename(!! New_Col_Name := a)
    
        2
  •  1
  •   Qian Zhang    2 年前
    library(dplyr)
    library(rlang)
    
    New_Col_Name <- 'Some_Name'
    dat <- data.frame('a' = 3)
    dat <- dat %>% rename(!!New_Col_Name := a)
    

    或

    library(dplyr)
    
    New_Col_Name <- 'Some_Name'
    dat <- data.frame('a' = 3)
    dat <- dat %>% setNames(c(New_Col_Name))
    
        3
  •  0
  •   Edward    2 年前

    纯R:

    names(dat) <- New_Col_Name
    

    或者,如果您有其他列:

    names(dat)[names(dat)=="a"] <- New_Col_Name
    

    不要骑大象去抓蚱蜢(泰国古老谚语)