R从字符串中提取第一个数字 [英] R extract first number from string

查看:852
本文介绍了R从字符串中提取第一个数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个称为v1的变量中有一个字符串.此字符串说明图片编号,并采用"Pic 27 + 28"的形式.我想提取第一个数字并将其存储在名为item的新变量中.

I have a string in a variable which we call v1. This string states picture numbers and takes the form of "Pic 27 + 28". I want to extract the first number and store it in a new variable called item.

我尝试过的一些代码是:

Some code that I've tried is:

item <- unique(na.omit(as.numeric(unlist(strsplit(unlist(v1),"[^0-9]+")))))

这很好,直到我找到了一个列表:

This worked fine, until I came upon a list that went:

[1,] "Pic 26 + 25"
[2,] "Pic 27 + 28"
[3,] "Pic 28 + 27"
[4,] "Pic 29 + 30"
[5,] "Pic 30 + 29"
[6,] "Pic 31 + 32"

这时,我得到的数字比我想要的要多,因为它还在抓取其他唯一数字(25).

At this point I get more numbers than I want, as it is also grabbing other unique numbers (the 25).

我实际上已经尝试过使用gsub进行此操作,但没有任何效果.帮助将不胜感激!

I've actually tried doing it with gsub, but got nothing to work. Help would be appreciated greatly!

推荐答案

我假设您要提取每个字符串中两个数字中的第一个.

I assume that you'd like to extract the first of two numbers in each string.

您可以使用 stringi 程序包中的stri_extract_first_regex函数:

You may use the stri_extract_first_regex function from the stringi package:

library(stringi)
stri_extract_first_regex(c("Pic 26+25", "Pic 1,2,3", "no pics"), "[0-9]+")
## [1] "26" "1"  NA  

这篇关于R从字符串中提取第一个数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆