Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中子集字符串_R_String_Substr - Fatal编程技术网

如何在R中子集字符串

如何在R中子集字符串,r,string,substr,R,String,Substr,亲爱的各位,我有一个字符串向量,如: LOCAT01PE WECAT013EJD AFECAT0155DR 我想对每个值进行子集,仅获取CAT和以下所有数字: CAT01 CAT013 CAT0155 我曾尝试使用substr命令,但它不起作用,因为单词CAT之前的数量不固定,CAT之后的数字也不固定。在基数R中,我们可以使用sub来提取CAT后跟数字 x <- c('LOCAT01PE', 'WECAT013EJD', 'AFECAT0155DR') sub('..*(CAT\\d+

亲爱的各位,我有一个字符串向量,如:

LOCAT01PE
WECAT013EJD
AFECAT0155DR
我想对每个值进行子集,仅获取CAT和以下所有数字:

CAT01
CAT013
CAT0155
我曾尝试使用substr命令,但它不起作用,因为单词CAT之前的数量不固定,CAT之后的数字也不固定。

在基数R中,我们可以使用sub来提取CAT后跟数字

x <- c('LOCAT01PE', 'WECAT013EJD', 'AFECAT0155DR')
sub('..*(CAT\\d+).*', '\\1', x)
#[1] "CAT01"   "CAT013"  "CAT0155"
在基数R中,我们可以使用sub来提取CAT,后跟数字

x <- c('LOCAT01PE', 'WECAT013EJD', 'AFECAT0155DR')
sub('..*(CAT\\d+).*', '\\1', x)
#[1] "CAT01"   "CAT013"  "CAT0155"
我们还可以将substr与regexpr一起使用,以标识字符串中的相关开始/停止点:

substr(vec,
       start = regexpr('CAT', vec),
       stop = regexpr('\\d[a-zA-Z]', vec)
       )
输出:

[1] "CAT01"   "CAT013"  "CAT0155"
我们还可以将substr与regexpr一起使用,以标识字符串中的相关开始/停止点:

substr(vec,
       start = regexpr('CAT', vec),
       stop = regexpr('\\d[a-zA-Z]', vec)
       )
输出:

[1] "CAT01"   "CAT013"  "CAT0155"
我们可以在base R中使用regexpr/regmatches。它匹配单词“CAT”,后跟-如果有的话?和一个或多个数字\\d+

数据 我们可以在base R中使用regexpr/regmatches。它匹配单词“CAT”,后跟-如果有的话?和一个或多个数字\\d+

数据 x x