Regex 查找以某个字母开头的所有单词
我对R和正则表达式都非常生疏。我试着阅读R的正则表达式帮助文件,但没有任何帮助 我有一个包含3列的数据框:Regex 查找以某个字母开头的所有单词,regex,string,r,Regex,String,R,我对R和正则表达式都非常生疏。我试着阅读R的正则表达式帮助文件,但没有任何帮助 我有一个包含3列的数据框: 词汇表,即语料库中500个最常见单词的列表 计数,单词出现的时间,以及 概率,计数除以所有单词计数的总和 这个列表是从最常见到最不常见的,所以不是按字母顺序排列的 我需要把以同一个字母开头的所有单词的整行都拉出来。(我不需要遍历所有字母表,我只需要一个字母的结果。) 我不仅仅是问regex,而是问如何用R编写它,以便在新的数据帧中得到结果。您可以使用grep: df <- data.
我不仅仅是问regex,而是问如何用R编写它,以便在新的数据帧中得到结果。您可以使用
grep
:
df <- data.frame(words=c("apple","orange","coconut","apricot"),var=1:4)
df[grep("^a", df$words),]
也许这对你有用
# Creating some data
set.seed(001)
count <- sample(1:100, 6, TRUE)
DF <- data.frame(vocabulary=c('action', 'can', 'book', 'candy', 'any','bar'),
count=count,
probability=count/sum(count)
)
# Spliting by the first letter
Split <- lapply(1:3, function(DF, i){
DF[grep(paste0('^', letters[i]), DF$vocabulary),]
}, DF=DF)
Split
[[1]]
vocabulary count probability
1 action 27 0.08307692
5 any 21 0.06461538
[[2]]
vocabulary count probability
3 book 58 0.1784615
6 bar 90 0.2769231
[[3]]
vocabulary count probability
2 can 38 0.1169231
4 candy 91 0.2800000
为什么不使用
split(DF,substr(DF$词汇表,1,1))
?假设苹果、橘子、椰子和杏子都是存储在我的环境中的数据帧的名称。有没有一种聪明的方法可以像上面那样使用grep函数来删除名称以“a”开头的数据帧,例如rm(grep代码)?
# Creating some data
set.seed(001)
count <- sample(1:100, 6, TRUE)
DF <- data.frame(vocabulary=c('action', 'can', 'book', 'candy', 'any','bar'),
count=count,
probability=count/sum(count)
)
# Spliting by the first letter
Split <- lapply(1:3, function(DF, i){
DF[grep(paste0('^', letters[i]), DF$vocabulary),]
}, DF=DF)
Split
[[1]]
vocabulary count probability
1 action 27 0.08307692
5 any 21 0.06461538
[[2]]
vocabulary count probability
3 book 58 0.1784615
6 bar 90 0.2769231
[[3]]
vocabulary count probability
2 can 38 0.1169231
4 candy 91 0.2800000
lapply(Split, function(x) orderBy(~vocabulary, data=x ))
[[1]]
vocabulary count probability
1 action 27 0.08307692
5 any 21 0.06461538
[[2]]
vocabulary count probability
6 bar 90 0.2769231
3 book 58 0.1784615
[[3]]
vocabulary count probability
2 can 38 0.1169231
4 candy 91 0.2800000