基于字母大小写拆分字符串

时间:2011-11-03 00:23:28

标签: r

我想拆分以下字符串

"ATextIWantToDisplayWithSpaces"
像这样

A Text I Want To Display With Spaces.

我在R

中尝试了此代码
strsplit(x="ATextIWantToDisplayWithSpaces", split=[:upper:])

产生此错误

Error: unexpected '[' in "strsplit(x="ATextIWantToDisplayWithSpaces", split=["

任何帮助都将受到高度赞赏。感谢

3 个答案:

答案 0 :(得分:25)

就这样做。它的工作原理是:(a)找到一个大写字母,(b)将它捕获到一个组中;(c)用它前面的空格替换它。

gsub('([[:upper:]])', ' \\1', x)

答案 1 :(得分:7)

您的具体问题的答案(“我如何拆分大写字母?”)是

strsplit(x="ATextIWantToDisplayWithSpaces", split="[[:upper:]]")

但@ Ramnath的回答是你真正想要的。 strsplit扔掉它分裂的字符。来自splitByPattern的{​​{1}}函数更接近,但它仍然不会以最方便的形式返回结果。

答案 2 :(得分:0)

我知道这是一个旧的方法,但是我将上面的解决方案调整为我需要的一种方法,在该方法中,我需要用大写字母拆分数据帧中列的值,然后只保留第二个元素。此解决方案使用dplyr和purrr:

df %>% mutate(stringvar= map(strsplit(stringvar, "(?!^)(?=[[:upper:]])", perl=T),~.x[2]) %>% unlist())