尝试使用以下方法重命名列:
rename_(.dots=setNames(names(.), gsub("`<?(-?[0-9A-Z]*)>?`", "Port\\1", names(.))))
但是出现了以下错误:
Error in parse(text = x) : <text>:1:1: unexpected '<'
以下是一个完整的测试用例:
library(dplyr)
library(readr)
l <- list(`1` = 1:500, `2` = 1:500, `<NA>` = 1:500)
df <- as_data_frame(l)
df %>% rename_(.dots = setNames(names(.), gsub("`<?(-?[0-9A-Z]*)>?`", "Port\\1", names(.))))
下面是正则表达式应该做的一些例子:
> gsub("`<?(-?[0-9A-Z]*)>?`", "Port\\1", "`2`")
[1] "Port2"
> gsub("`<?(-?[0-9A-Z]*)>?`", "Port\\1", "`1`")
[1] "Port1"
> gsub("`<?(-?[0-9A-Z]*)>?`", "Port\\1", "`<NA>`")
[1] "PortNA"
> gsub("`<?(-?[0-9A-Z]*)>?`", "Port\\1", "`-2`")
[1] "Port-2"
答案 0 :(得分:0)
反引号需要围绕您引用的名称,而不是模式:
1.8