使用正则表达式提取括号内的数字?
Extract number inside brackets using regular expression?
假设我有这样一个数据框:
library(tidyverse)
index <- 1:1000
df1 <- data.frame(index = glue::glue('index[{index}]'),
X = rnorm(1000))
我想mutate
索引,所以它是一个数字变量,数字在括号内。我可以用这段代码做到这一点:
df2 <- df1 %>% mutate(index = gsub(pattern = 'index[', replacement = '', x = index, fixed = T),
index = gsub(pattern = ']', replacement = '', x = index, fixed = T),
index = as.numeric(index))
我相信有更好的方法可以使用正则表达式来完成这项工作。理想情况下,我想要一些与 [
之前的文本不可知的东西。
> df2 <- df1 %>% mutate(index = as.numeric(gsub("index\[(\d+)\]", "\1", index)))
> df2 %>% head
index X
1 1 1.1991921
2 2 0.5474659
3 3 -0.8437927
4 4 -1.8488537
5 5 -0.4673391
6 6 -1.1255241
假设我有这样一个数据框:
library(tidyverse)
index <- 1:1000
df1 <- data.frame(index = glue::glue('index[{index}]'),
X = rnorm(1000))
我想mutate
索引,所以它是一个数字变量,数字在括号内。我可以用这段代码做到这一点:
df2 <- df1 %>% mutate(index = gsub(pattern = 'index[', replacement = '', x = index, fixed = T),
index = gsub(pattern = ']', replacement = '', x = index, fixed = T),
index = as.numeric(index))
我相信有更好的方法可以使用正则表达式来完成这项工作。理想情况下,我想要一些与 [
之前的文本不可知的东西。
> df2 <- df1 %>% mutate(index = as.numeric(gsub("index\[(\d+)\]", "\1", index)))
> df2 %>% head
index X
1 1 1.1991921
2 2 0.5474659
3 3 -0.8437927
4 4 -1.8488537
5 5 -0.4673391
6 6 -1.1255241