在 R 字符串中识别 consonants/vowels
Identifying consonants/vowels in R string
似乎找不到这个问题的答案。
我编写了一些 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
阿贝 || VVCCV
AEEBC || VVVCC
等等等...
问题是这完全不优雅且效率低下,特别是如前所述,var 的长度在 5-7 个字符之间。
我还想避免合并 sqldf,因为我发现它使得在某些情况下稍后很难在数据帧上执行基本 R 函数。
那么,您能否建议我如何使用 R 实现这一点,重要的是,使用一种无论字符长度如何都有效的方法?
你可以这样做...
a <- "Whosebug"
b <- gsub("[^aeiouAEIOU]","C",a)
b <- gsub("[^C]","V",b)
b
[1] "CCVCCVCVCCCVC"
似乎找不到这个问题的答案。
我编写了一些 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
阿贝 || VVCCV
AEEBC || VVVCC
等等等...
问题是这完全不优雅且效率低下,特别是如前所述,var 的长度在 5-7 个字符之间。 我还想避免合并 sqldf,因为我发现它使得在某些情况下稍后很难在数据帧上执行基本 R 函数。
那么,您能否建议我如何使用 R 实现这一点,重要的是,使用一种无论字符长度如何都有效的方法?
你可以这样做...
a <- "Whosebug"
b <- gsub("[^aeiouAEIOU]","C",a)
b <- gsub("[^C]","V",b)
b
[1] "CCVCCVCVCCCVC"