我想在R中拆分文本字符串,但我想考虑一些方面。例如,如果字符串有一个点.
或!
,我希望我的函数将它们作为我的拆分列表的元素。下面是我想要的例子。
mytext="Caracas. Montevideo! Chicago."
split= "Caracas", "." ,"Montevideo", "!", "Chicago", "."
我目前的方法是先用内置的R函数gsub
替换"。" by" 。 "然后我也使用strsplit函数。
mytext=gsub("\\."," .",mytext)
mytext=gsub("\\!"," !",mytext)
unlist(strsplit(mytext,split=' '))
所以,我的问题是:是否有另一种方法可以通过配置strsplit
函数的参数或其他方法来实现这一点,您可以更有效率。
感谢任何帮助或建议。
答案 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" "."