R语言 从字符串向量中提取数字

R语言 从字符串向量中提取数字

在这篇文章中,我们将看到如何在R编程语言中从字符串向量中提取数字。有不同的方法可以使用一些内置的函数从字符串向量中提取数字。它可以通过以下方式完成。

  • 使用gsub()函数从字符串中提取数字
  • 使用gregexpr()和regmatches()函数从字符串中提取数字

方法1: 使用gsub()函数。

在这个方法中,用户必须调用gsub()函数,这是R语言的一个内置函数,并将数字在给定字符串中首次出现的模式和字符串的矢量作为该函数的参数,作为回报,该函数将向用户返回给定字符串中首次出现的数字。

gsub()函数: 该函数用于替换查找一个字符串的所有匹配,如果参数是一个字符串向量,则返回一个相同长度和相同属性的字符串向量。

语法: gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)

参数

  • pattern:要匹配的字符串,支持正则表达式
  • replacement:用于替换的字符串
  • x:字符串或字符串向量
  • perl:逻辑的。是否应该使用与Perl兼容的正则表达式?优先级已被过度扩展
  • fixed:逻辑的。如果是TRUE,模式是一个字符串,要按原样匹配。
  • useBytes:逻辑的。如果为 “true”,则逐个字节地进行匹配,而不是逐个字符地进行匹配

对于在字符串中寻找数字,模式将是。

".*?([0-9]+).*"
R

例子

gfg <- c("7g8ee6ks1", "5f9o1r0", "geeks10")           
print(gfg)
  
res = as.numeric(gsub(".*?([0-9]+).*", "\\1", gfg))             
print(res)
R

输出

[1] "7g8ee6ks1" "5f9o1r0"   "geeks10"  
[1]  7  5 10
R

方法2: 使用gregexpr()和regmatches()函数

在这种使用gregexpr()和regmatches()函数从字符串中提取数字的方法中,用户需要用特定的参数来调用这些函数,然后在返回时,这些函数将向用户返回存在于字符串向量中的所有数字。

gregexpr()函数: 这个函数返回一个与文本相同长度的列表,其中每个元素的形式与regexpr的返回值相同,只是给出了每个(不相交)匹配的起始位置。

语法: gregexpr(pattern, text, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

参数

  • pattern:正则表达式,如果固定=TRUE,则为字符串
  • text:字符串,字符矢量
  • ignore.case:是否区分大小写
  • perl:逻辑性。是否应该使用perl兼容的正则表达式?优先于扩展的
  • fixed: 逻辑的。如果为 “true”,pattern是一个字符串,将按原样匹配。覆盖所有冲突的参数
  • useBytes: 逻辑的。如果为 “true”,则逐个字节地进行匹配,而不是逐个字符进行匹配。

regmatches()函数: 该函数用于从匹配数据中提取或替换匹配的子字符串。

语法: regmatches(x, m, invert = FALSE)

参数

  • x:-一个字符向量
  • m:-一个含有匹配数据的对象
  • invert:-一个逻辑:如果是TRUE,提取或替换不匹配的子字符串。

例子

gfg <- c("7g8ee6ks1", "5f9o1r0", "geeks10")           
  
gfg_numbers <- regmatches(gfg, gregexpr("[[:digit:]]+", gfg))
as.numeric(unlist(gfg_numbers))
R

输出

[1]  7  8  6  1  5  9  1  0 10
R

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册