R中特定的字符串拆分

时间:2013-11-21 20:43:31

标签: string r

我想在R中拆分文本字符串,但我想考虑一些方面。例如,如果字符串有一个点.!,我希望我的函数将它们作为我的拆分列表的元素。下面是我想要的例子。

  mytext="Caracas. Montevideo! Chicago."  
  split= "Caracas", "." ,"Montevideo", "!", "Chicago", "."    

我目前的方法是先用内置的R函数gsub替换"。" by" 。 "然后我也使用strsplit函数。

  mytext=gsub("\\."," .",mytext)
  mytext=gsub("\\!"," !",mytext)
  unlist(strsplit(mytext,split=' '))

所以,我的问题是:是否有另一种方法可以通过配置strsplit函数的参数或其他方法来实现这一点,您可以更有效率。

感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:3)

前瞻是你在这里寻找的东西:

strsplit(mytext, split = "(?=(\\.|!))", perl = TRUE)
#[[1]]
#[1] "Caracas"     "."           " Montevideo" "!"           " Chicago"    "." 

答案 1 :(得分:1)

eddi的解决方案不会拆分空格。试试这个:

> regmatches(mytext, gregexpr(text=mytext, pattern="(?=[\\.\\!])|(?:\\s)", perl=T), invert=T)
[[1]]
[1] "Caracas"    "."          "Montevideo" "!"          "Chicago"    "."