似乎找不到答案。
我编写了一些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
VVVCC
等等等等。
问题是,这是完全不优雅和可悲的低效,特别是,正如前面提到的,变量的长度在5-7个字符之间。我还想避免合并sqldf,因为我发现它使得以后在某些情况下很难在dataframe上执行基R函数。
所以,你能告诉我如何使用R来实现这一点吗?更重要的是,我可以使用一种不考虑焦炭长度的方法来实现这一点?
发布于 2017-05-21 17:39:55
你可以这样做..。
a <- "stackoverflow"
b <- gsub("[^aeiouAEIOU]","C",a)
b <- gsub("[^C]","V",b)
b
[1] "CCVCCVCVCCCVC"https://stackoverflow.com/questions/44099728
复制相似问题