使用gsub重命名列失败

时间:2016-10-28 22:25:17

标签: r dplyr

尝试使用以下方法重命名列:

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" 

1 个答案:

答案 0 :(得分:0)

反引号需要围绕您引用的名称,而不是模式:

1.8