我绞尽脑汁,还没想出好的解决办法。
我有以下向量,我打算在 R 中拆分:
x <- c("Sara: has brown hair, Mary Jane: is, mostly, regarded as intelligent, Marc-Oliver: big,handsome","Elvis: loud, dead, Ray Charles: silent, dead, Rihanna: alive")
对于上下文:冒号后面的单词是冒号之前单词的进一步精确。因此,Sara、Mary Jane、Marc-Oliver、Elvis、Ray Charles 可以视为类别,而描述可以视为子类别。现在的目标是拆分字符串,使类别和子类别放在一起。因此,结果应如下所示:
[1] "Sara: has brown hair" "Mary Jane: is, mostly, regarded as intelligent" "Marc-Oliver: big, handsome"
[2] "Elvis: loud, dead" "Ray Charles: silent, dead" "Rihanna: alive"
问题在于,对于任何配对,冒号之前的单词数量都不相同,同样,冒号之后的逗号数量也不同。有谁知道如何实现这一目标?
我尝试调整此解决方案(正则表达式来匹配第一个逗号和第一个数字之前的逗号之间的文本)和这个线程(在字符串中的第一个逗号上分割),但说实话,当涉及到更多复杂的正则表达式,我只看到字符放在一起。
使用
strsplit
分割逗号、空格和大写字符。分割时不要消耗大写字母。
strsplit(x, ", (?=[[:upper:]])", perl = TRUE)
给予
[[1]]
[1] "Sara: has brown hair"
[2] "Mary Jane: is, mostly, regarded as intelligent"
[3] "Marc-Oliver: big,handsome"
[[2]]
[1] "Elvis: loud, dead" "Ray Charles: silent, dead"
[3] "Rihanna: alive"