我有.txt格式的电子邮件。我正在尝试将包含电子邮件的各种单词拆分为向量的不同元素。
我正在使用这种方法,它有点工作(仍然需要改进reg expr)
corpus <- url %>%
paste(readLines("H:/Spam/prova.txt"), collapse=" ") %>%
gsub("H:/Spam/prova.txt", "", .)
head(corpus)
z <- corpus %>%
gsub(" +", " ", .) %>%
strsplit(split = "[\\a-zA-Z0-9':!?$€.] ")
z[[1]]
关于这个算法的唯一问题是它删除了它遇到的每个单词的最后一个字母,而我似乎无法解决它,因为我缺乏R的经验
输出示例:
[1039] "N" " operato"
[1041] "pleas" "leav"
[1043] "you" "nam"
[1045] "phon" "numbe"
[1047] "an" "bes"
[1049] "tim" "N"
答案 0 :(得分:1)
好的,事实证明我并不完全正确。 Stringr是正确的地方。这只是不同的命令......
library(stringi)
library(stringr)
library(microbenchmark)
# Test file from "http://ocw.mit.edu/ans7870/6/6.006/s08/lecturenotes/files/t8.shakespeare.txt"
text_sample<-readLines("Testfile_Text.txt")
microbenchmark(str_extract_all(text_sample,"\\w+"), times=10)
microbenchmark(stri_extract_all_words(text_sample), times=10)
这是你在找什么?如果有效,请告诉我......
修改强> 我很快就对两种方法进行了基准stri_extract_all_words更快......
Unit: milliseconds
expr min lq mean median uq max neval
str_extract_all(text_sample, "\\\\w+") 426.759 467.0959 496.0429 486.2049 547.1542 572.6955 10
expr min lq mean median uq max neval
stri_extract_all_words(text_sample) 361.3251 388.7932 418.5938 409.8164 454.7217 495.8416 10
结果:
{{1}}