24

最初の ")" を取得して文字列を分割する strsplit コマンドを書きたいと思います。

例えば:

f("12)34)56")
"12" "34)56"

他の関連する正規表現SOの質問をいくつか読みましたが、これについて頭や尾を立てることができないのではないかと心配しています。ご協力ありがとうございます。

4

5 に答える 5

21

最初の一致を取得したstrsplit場合と同じリスト型の結果を取得し、次に の逆の結果を取得できます。regexprregmatches

x <- "12)34)56"
regmatches(x, regexpr(")", x), invert = TRUE)
# [[1]]
# [1] "12"    "34)56"
于 2014-10-08T00:35:31.903 に答える
6

文字がどこにあるかを特定してから、その両側をサブストリング化する方が安全かもしれません。

x <- "12)34)56"
spl <- regexpr(")",x)
substring(x,c(1,spl+1),c(spl-1,nchar(x)))
#[1] "12"    "34)56"
于 2014-10-08T00:21:43.623 に答える
4

別のオプションはstr_split、パッケージで使用することstringrです:

library(stringr)
f <- function(string)
{
  unlist(str_split(string,"\\)",n=2))
}
> f("12)34)56")
[1] "12"    "34)56"
于 2014-10-07T22:14:14.800 に答える