Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 查找以某个字母开头的所有单词_Regex_String_R - Fatal编程技术网

Regex 查找以某个字母开头的所有单词

Regex 查找以某个字母开头的所有单词,regex,string,r,Regex,String,R,我对R和正则表达式都非常生疏。我试着阅读R的正则表达式帮助文件,但没有任何帮助 我有一个包含3列的数据框: 词汇表,即语料库中500个最常见单词的列表 计数,单词出现的时间,以及 概率,计数除以所有单词计数的总和 这个列表是从最常见到最不常见的,所以不是按字母顺序排列的 我需要把以同一个字母开头的所有单词的整行都拉出来。(我不需要遍历所有字母表,我只需要一个字母的结果。) 我不仅仅是问regex,而是问如何用R编写它,以便在新的数据帧中得到结果。您可以使用grep: df <- data.

我对R和正则表达式都非常生疏。我试着阅读R的正则表达式帮助文件,但没有任何帮助

我有一个包含3列的数据框:

  • 词汇表,即语料库中500个最常见单词的列表
  • 计数,单词出现的时间,以及
  • 概率,计数除以所有单词计数的总和
  • 这个列表是从最常见到最不常见的,所以不是按字母顺序排列的

    我需要把以同一个字母开头的所有单词的整行都拉出来。(我不需要遍历所有字母表,我只需要一个字母的结果。)


    我不仅仅是问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