Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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
Regex 如何在R中删除非字母字符并将所有字母转换为小写?_Regex_R - Fatal编程技术网

Regex 如何在R中删除非字母字符并将所有字母转换为小写?

Regex 如何在R中删除非字母字符并将所有字母转换为小写?,regex,r,Regex,R,在以下字符串中: "I may opt for a yam for Amy, May, and Tommy." 如何删除非字母字符,将所有字母转换为小写字母,并对R中每个单词内的字母进行排序 同时,我尝试对句子中的单词进行排序并删除重复的单词。strstringr将允许您以R和C速度处理所有字符集,magrittr将允许您使用适合您需要的管道习惯用法: str <- "I may opt for a yam for Amy, May, and Tommy." ## Clean the

在以下字符串中:

"I may opt for a yam for Amy, May, and Tommy."

如何删除非字母字符,将所有字母转换为小写字母,并对R中每个单词内的字母进行排序


同时,我尝试对句子中的单词进行排序并删除重复的单词。

str
stringr
将允许您以R和C速度处理所有字符集,
magrittr
将允许您使用适合您需要的管道习惯用法:

str <- "I may opt for a yam for Amy, May, and Tommy."

## Clean the words (just keep letters and convert to lowercase)
words <- strsplit(tolower(gsub("[^A-Za-z ]", "", str)), " ")[[1]]

## split the words into characters and sort them
sortedWords <- sapply(words, function(word) sort(unlist(strsplit(word, ""))))

## Join the sorted letters back together
sapply(sortedWords, paste, collapse="")

# i     may     opt     for       a     yam     for     amy     may     and 
# "i"   "amy"   "opt"   "for"     "a"   "amy"   "for"   "amy"   "amy"   "adn" 
# tommy 
# "mmoty" 

## If you want to convert result back to string
do.call(paste, lapply(sortedWords, paste, collapse=""))
# [1] "i amy opt for a amy for amy amy adn mmoty"
library(stringr)
library(magrittr)

txt <- "I may opt for a yam for Amy, May, and Tommy."

txt %>% 
  str_to_lower %>%                                            # lowercase
  str_replace_all("[[:punct:][:digit:][:cntrl:]]", "") %>%    # only alpha
  str_replace_all("[[:space:]]+", " ") %>%                    # single spaces
  str_split(" ") %>%                                          # tokenize
  extract2(1) %>%                                             # str_split returns a list
  sort %>%                                                    # sort
  unique                                                      # unique words

  ## [1] "a"     "amy"   "and"   "for"   "i"     "may"   "opt"   "tommy" "yam"  
库(stringr)
图书馆(magrittr)
txt%
str_to_lower%%>%#小写
str_replace_all(“[[:punct:][:digit:][:cntrl:][],”)%>%仅阿尔法
str_replace_all(“[[:space:]+”,“”)%>%#单个空格
str_分割(“”%>%#标记化
extract2(1)%>%#str#u split返回一个列表
排序%>%#排序
独特的#独特的词语
##[1]“艾米”和“我”可以选择“汤米”和“任”

您可以使用
stringi

library(stringi)
unique(stri_sort(stri_trans_tolower(stri_extract_all_words(txt, simplify = TRUE))))
其中:

## [1] "a"     "amy"   "and"   "for"   "i"     "may"   "opt"   "tommy" "yam" 
更新

正如@DavidArenburg提到的,我忽略了你问题中的“将字母按单词排序”部分。您没有提供所需的输出,也没有立即出现的应用程序,但是,假设您要确定哪些单词具有匹配的对应项(字符串距离为0):


每行超过一个
0
的单词(
“amy”、“may”、“yam”
)有一个加扰的对应词。

我维护的qdap包具有
打包单词
功能,适用于以下情况:

txt <- "I may opt for a yam for Amy, May, and Tommy."

library(qdap)

unique(sort(bag_o_words(txt)))

## [1] "a"     "amy"   "and"   "for"   "i"     "may"   "opt"   "tommy" "yam"

txt到目前为止,您能给我们展示一下吗?您能提供一个示例字符串和预期的输出吗?要转换成小写,只需使用
tolower
“对每个单词中的字母进行排序”?我现在倾向于使用
stringr
,因为它在引擎盖下使用
stringi
,但该功能,但
stri\u extract\u all\u words
看起来非常方便。我可能不得不重新使用
stringi
。是的
stringr
更简单,但我发现
stringi
更灵活。@hrbrmstr我想你们都忽略了“对每个单词中的字母进行排序”部分,但这到底意味着什么?@Davidernburg OP要求对单词中的字母进行排序。这对我来说毫无意义。这篇文章是赤裸裸的。我认为,如果OP提供了所需的输出,他们的问题将更加清楚,因为他们所要求的内容没有明显的即时应用。我想知道是否可能
txt%>%str\u to\u lower%>%str\u replace\u all(“[^[:alpha:][]”),“)%%>%str str split(“+”%%>%extract2(1)%%>%sort%%>%unique
可能更简洁。
txt <- "I may opt for a yam for Amy, May, and Tommy."

library(qdap)

unique(sort(bag_o_words(txt)))

## [1] "a"     "amy"   "and"   "for"   "i"     "may"   "opt"   "tommy" "yam"