R:如何判断一个单词中出现重复字母的位置,以便添加到数据框中
我试图检测向量中有多少单词有一个重复的字母,并计算它在其他单词中重复的次数,每次遇到重复的字母时将其添加到数据帧中。 例如:R:如何判断一个单词中出现重复字母的位置,以便添加到数据框中,r,R,我试图检测向量中有多少单词有一个重复的字母,并计算它在其他单词中重复的次数,每次遇到重复的字母时将其添加到数据帧中。 例如:x=c(“谷歌”、“血液”、“街道”) 数据框将显示为 letter n 1 oo 2 2 ee 1 base R中的一个选项是转换为raw,使用rle获得游程长度编码,仅将长度大于1的元素子集,重新转换为字符,并使用表获得频率计数 stack(table(sapply(x, function(y)
x=c(“谷歌”、“血液”、“街道”)
数据框将显示为
letter n
1 oo 2
2 ee 1
base R
中的一个选项是转换为raw
,使用rle
获得游程长度编码,仅将长度大于1的元素子集,重新转换为字符,并使用表获得频率计数
stack(table(sapply(x, function(y) rawToChar(with(rle(charToRaw(y)),
rep(values[lengths > 1], lengths[lengths > 1]))))))[2:1]
# ind values
#1 ee 1
#2 oo 2
dfout <- as.data.frame(table(unlist(regmatches(x,gregexpr("(\\w)\\1+",x)))))
或者使用str\u extract
(假设只有一个重复的子字符串)
或者使用dplyr
library(dplyr)
library(tidyr)
str_extract_all(x, "(\\w)\\1") %>%
tibble(letter = .) %>%
unnest(c(letter)) %>%
count(letter)
base R
中的一个选项是转换为raw
,使用rle
获得游程长度编码,仅将长度大于1的元素子集,重新转换为字符,并使用表获得频率计数
stack(table(sapply(x, function(y) rawToChar(with(rle(charToRaw(y)),
rep(values[lengths > 1], lengths[lengths > 1]))))))[2:1]
# ind values
#1 ee 1
#2 oo 2
dfout <- as.data.frame(table(unlist(regmatches(x,gregexpr("(\\w)\\1+",x)))))
或者使用str\u extract
(假设只有一个重复的子字符串)
或者使用dplyr
library(dplyr)
library(tidyr)
str_extract_all(x, "(\\w)\\1") %>%
tibble(letter = .) %>%
unnest(c(letter)) %>%
count(letter)
您可以使用正则表达式匹配重复字母,也可以使用stringr::str\u match\u all()匹配重复字母。
:
您可以使用正则表达式匹配重复字母,也可以使用stringr::str\u match\u all()匹配重复字母。
:
另一个使用regmatches
+table
stack(table(sapply(x, function(y) rawToChar(with(rle(charToRaw(y)),
rep(values[lengths > 1], lengths[lengths > 1]))))))[2:1]
# ind values
#1 ee 1
#2 oo 2
dfout <- as.data.frame(table(unlist(regmatches(x,gregexpr("(\\w)\\1+",x)))))
另一个使用regmatches
+table
stack(table(sapply(x, function(y) rawToChar(with(rle(charToRaw(y)),
rep(values[lengths > 1], lengths[lengths > 1]))))))[2:1]
# ind values
#1 ee 1
#2 oo 2
dfout <- as.data.frame(table(unlist(regmatches(x,gregexpr("(\\w)\\1+",x)))))
谢谢你的回答!在上一个解决方案中,当您将字母=.
作为参数传递给tibble()时,这是否只是str_extract()传入的值的一个占位符?@courtmidleton这里的
是str_extract_all
的输出,它被捕获以在tibble
创建的tbl_df
中创建一列。是的,这是str_提取的值,谢谢你的回答!在上一个解决方案中,当您将字母=.
作为参数传递给tibble()时,这是否只是str_extract()传入的值的一个占位符?@courtmidleton这里的
是str_extract_all
的输出,它被捕获以在tibble
创建的tbl_df
中创建一列。是的,它是从str_extract导出的值