尝试使用以下方法重命名列:
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(.))))下面是regex应该做的一些例子:
> 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" 发布于 2016-10-28 22:59:24
后面的标记必须围绕您所引用的名称,而不是模式:
df %>% rename_(.dots = setNames(paste0('`', names(.), '`'),
gsub("<?(-?[0-9A-Z]*)>?", "Port\\1", names(.))))
## # A tibble: 500 × 3
## Port1 Port2 PortNA
## <int> <int> <int>
## 1 1 1 1
## 2 2 2 2
## 3 3 3 3
## 4 4 4 4
## 5 5 5 5
## 6 6 6 6
## 7 7 7 7
## 8 8 8 8
## 9 9 9 9
## 10 10 10 10
## # ... with 490 more rowshttps://stackoverflow.com/questions/40314013
复制相似问题