识别R字符串中的辅音/元音

时间:2017-05-21 17:22:25

标签: r string gsub sqldf

似乎无法找到答案。

我已经编写了一些R代码来从较长的字符串中提取子字符串,并将每个字符留在'。'。来自原始字符串,如下所示。

dataframe1[["column"]] <- gsub("\\..*","",dataframe2$variable)

这很好用,没问题。 注意生成的子串在5-7个字符之间具有可变长度。

我现在需要找到一种方法来评估所述字符串中的每个字符是辅音还是元音。

我以前使用sqldf实现了这个目的,如下所示;

   ("SELECT char1||char2||char3||char4||char5 as pattern
            FROM
                (SELECT CASE WHEN substr(var,1,1) IN ('a','e','i','o','u') THEN 'V' ELSE 'C' END as char1  
                ,CASE WHEN substr(var,2,1) IN ('a','e','i','o','u') THEN 'V' ELSE 'C' END as char2  
                ,CASE WHEN substr(var,3,1) IN ('a','e','i','o','u') THEN 'V' ELSE 'C' END as char3
                ,CASE WHEN substr(var,4,1) IN ('a','e','i','o','u') THEN 'V' ELSE 'C' END as char4
                ,CASE WHEN substr(var,5,1) IN ('a','e','i','o','u') THEN 'V' ELSE 'C' END as char5 
     FROM some_table WHERE len = '5L')")

这会给我一些类似的东西:

ABBCD || VCCCC

ABABE || VCVCV

AEEBC || VVVCC

等等......

问题是这完全不优雅且效率低下,特别是如上所述,var的长度在5-7个字符之间。 我还想避免使用sqldf,因为我发现它在某些情况下在数据帧上执行基本R函数时很困难。

那么,你能否告诉我如何使用R实现这一点,重要的是,使用一种无​​论字符长度有效的方法?

1 个答案:

答案 0 :(得分:3)

你可以这样做......

a <- "stackoverflow"

b <- gsub("[^aeiouAEIOU]","C",a)
b <- gsub("[^C]","V",b)

b
[1] "CCVCCVCVCCCVC"