0

以下の文字列ですべてのFOOとそれに続く数字を見つけて、それらをベクトルとして返したいと想像してください(読みづらいことをお詫びします。FOOの前後に規則的なパターンがないことを強調したいと思います)。

xx <- "xasdrFOO1921ddjadFOO1234dakaFOO12345ndlslsFOO1643xasdf"

これを使用して、そのうちの1つを見つけることができます(1から取得)

gsub(".*(FOO[0-9]+).*", "\\1", xx)
[1] "FOO1643"

ただし、それらすべてをベクトルとして返したいと思います。

strplit()とgregexpr()を使用してそれを行うための複雑な方法を考えましたが、より良い(そしてより簡単な)方法があると感じています。

4

3 に答える 3

6

あなたは興味があるかもしれませんregmatches:

> regmatches(xx, gregexpr("FOO[0-9]+", xx))[[1]]
[1] "FOO1921"  "FOO1234"  "FOO12345" "FOO1643" 
于 2012-11-30T12:27:26.447 に答える
3
xx <- "xasdrFOO1921ddjadFOO1234dakaFOO12345ndlslsFOO1643xasdf"
library(stringr)
str_extract_all(xx, "(FOO[0-9]+)")[[1]]
#[1] "FOO1921"  "FOO1234"  "FOO12345" "FOO1643" 

これは文字列のベクトルも取ることができ、数学はリスト要素に含まれます。

于 2012-11-30T13:00:58.850 に答える
2

少し短いバージョン。

library(gsubfn)
strapplyc(xx,"FOO[0-9]*")[[1]]
于 2012-11-30T13:47:32.987 に答える