Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何判断一个单词中出现重复字母的位置,以便添加到数据框中_R - Fatal编程技术网

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导出的值