【发布时间】:2019-07-02 08:22:53
【问题描述】:
我有一个看起来像这样的数据框。 它指的是单词及其结构
df <- data.frame(word = c("pokkoitta", "demna", "ningatinggo ", "tengkeam", "bampana", "njam"), structure = c("CvC:vvC:v", "CvCCv", "CvCvCvNCv", "CvNCvvC", "CvNCvCv" , "NCvC"))
第二列表示第一列的结构。如果在第二列中出现 C:、NC 或 CC 组合,我需要从第一列中提取它们所指的内容。
所以我需要:
kk C:
kk C:
mn CC
ngg NC
ngk NC
mp NC
nj NC
需要考虑的一件事是,简单的计数不适用于左列中的 2 个字母,它们对应于右列中的 1 个字母,即 ng|sy|kh = C(不是 CC,因为它们表示一个音素)
而且,总之,这些组合可以出现不止一种
谢谢
更新:
这将是正则表达式的匹配模式:
(nj|ngk|ngg|nc|nt|nd|mp|mb) = NC
(ng|sy|kh) = C
[b-df-hj-np-tv-xz])\\1+) = C:
([b-df-hj-np-tv-z]) = C
(') = :
((a|e|i|o|u)\\1+) = v:
(a|e|i|o|u) = v
【问题讨论】:
-
添加一个样本数据集,并在字母之间按顺序列出匹配规则
-
您不能使用任何用于查找结构的工具吗?我不认为有一个简单的正则表达式解决方案,因为长度不匹配一对一。