【问题标题】:renaming columns in R with `-` symbol用`-`符号重命名R中的列
【发布时间】:2019-08-22 12:44:30
【问题描述】:
temp <- data.frame(re_ply = rnorm(10), total_ID = rnorm(10),  re_ask = rnorm(10))

我想将列更改为: re_plyRe-ply total_IDtotal_id re_askRe-ask

temp <- temp %>% dplyr::rename(Re-ply = re_ply,
                           total_id = total_ID,
                           Re-ask = re_ask)

这不起作用,因为在 Re-plyRe-ask 中有 - 符号不起作用。我该如何解决。我知道在列名中有一个- 符号并不理想,但只是想检查这是否可能。我唯一的目标是重命名这个文件,如上所示,写成.csv,然后在excel中做其他处理。

【问题讨论】:

标签: r dplyr data.table rename


【解决方案1】:

简单地说,用“特殊字符”(如减号)将所有参数名称包装在反引号或引号中,例如rename("Re-ply" = re_ply)。如果你想要 old name = new name 而不是 new name = old name,你可以使用 quasiquotation 或 sjmisc::var_rename()

library(rlang)
library(dplyr)
library(sjmisc)

temp <- data.frame(
  re_ply = rnorm(10), 
  total_ID = rnorm(10),  
  re_ask = rnorm(10)
)


old_name <- "re_ply"
new_name <- "Re-ply"

temp %>% colnames()
#> [1] "re_ply"   "total_ID" "re_ask"

temp %>% 
  dplyr::rename(
    "Re-Ply" = re_ply,
    total_id = total_ID,
    "Re-ask" = re_ask
  ) %>% 
  colnames()
#> [1] "Re-Ply"   "total_id" "Re-ask"

temp %>% 
  dplyr::rename(
    !! new_name := !! old_name,
    total_id = total_ID,
    "Re-ask" = re_ask
  ) %>% 
  colnames()
#> [1] "Re-ply"   "total_id" "Re-ask"

temp %>% 
  sjmisc::var_rename(
    re_ply = "Re-ply",
    total_ID = total_id,
    re_ask = "Re-ask"
  ) %>% 
  colnames()
#> [1] "Re-ply"   "total_id" "Re-ask"

temp %>% 
  sjmisc::var_rename(
    !! old_name := !! new_name,
    total_ID = "total_id",
    re_ask = "Re-ask"
  ) %>% 
  colnames()
#> [1] "Re-ply"   "total_id" "Re-ask"

reprex package (v0.2.1) 于 2019-04-01 创建

【讨论】:

  • R 允许在此处使用常规引号,但文档建议不要这样做(这非常令人困惑,因为 R 解释器不将生成的标记视为字符串;R 仅出于向后的原因支持它兼容性)。
【解决方案2】:

这可以使用rename 来完成。您只需将带有特殊字符的列名放在“`”符号内:

temp <- temp %>% dplyr::rename(`Re-ply` = re_ply,
                                total_id = total_ID,
                                `Re-ask` = re_ask)
names(temp)
[1] "Re-ply"   "total_id" "Re-ask" 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    相关资源
    最近更新 更多