R 如何将重复字母表替换为一个字母表
假设我有一个重复字母的向量,如下所示:R 如何将重复字母表替换为一个字母表,r,regex,R,Regex,假设我有一个重复字母的向量,如下所示: x <- c("b b b b", "a a ") "b", "a" 我已经找到了其他解决方案来删除重复项,但它们都涉及到字符向量,而不是中间有空格的字符串。有什么建议吗?这里有一个使用sub的基于正则表达式的方法。首先,我删除字符串中的所有空格。然后,我对以下模式进行替换: (.)\\1{1,} 我将替换为\\1。这里的逻辑是匹配并捕获一个字母,然后将其与后面的任何相同字母一起替换为该字母。这实际上就是你想要的 x <- c("b b
x <- c("b b b b", "a a ")
"b", "a"
我已经找到了其他解决方案来删除重复项,但它们都涉及到字符向量,而不是中间有空格的字符串。有什么建议吗?这里有一个使用sub的基于正则表达式的方法。首先,我删除字符串中的所有空格。然后,我对以下模式进行替换:
(.)\\1{1,}
我将替换为\\1。这里的逻辑是匹配并捕获一个字母,然后将其与后面的任何相同字母一起替换为该字母。这实际上就是你想要的
x <- c("b b b b","a a ")
x <- gsub("\\s+", "", x)
result <- gsub("(.)\\1{1,}", "\\1", x)
result
[1] "b" "a"
下面是一种使用sub的基于正则表达式的方法。首先,我删除字符串中的所有空格。然后,我对以下模式进行替换:
(.)\\1{1,}
我将替换为\\1。这里的逻辑是匹配并捕获一个字母,然后将其与后面的任何相同字母一起替换为该字母。这实际上就是你想要的
x <- c("b b b b","a a ")
x <- gsub("\\s+", "", x)
result <- gsub("(.)\\1{1,}", "\\1", x)
result
[1] "b" "a"
您可以执行以下操作。R具有内置的常量字母。将x分隔为单个字符,并在此基础上对字母进行子集
letters[letters %in% unlist(strsplit(x, ' '))]
[1] "a" "b"
您可以执行以下操作。R具有内置的常量字母。将x分隔为单个字符,并在此基础上对字母进行子集
letters[letters %in% unlist(strsplit(x, ' '))]
[1] "a" "b"
在R中使用字符串的另一个漂亮的包是tidyverse中的stringr 首先删除所有多余的空格,然后将字符串拆分为字符
这个解决方案有点冗长,但本质上与的答案相同。尽管我认为像我这样的正则表达式新手更容易理解。另一个在R中处理字符串的漂亮软件包是tidyverse中的stringr 首先删除所有多余的空格,然后将字符串拆分为字符 这个解决方案有点冗长,但本质上与的答案相同。尽管我认为像我这样的正则表达式新手更容易理解