【问题标题】:How to split a certain element in a vector by letters?如何按字母拆分向量中的某个元素?
【发布时间】:2014-06-13 02:10:32
【问题描述】:

例如,我在向量中有一个元素“计算机”。我需要得到一个由“c”、“o”、“m”、“p”、“u”、“t”、“e”、“r”组成的向量。

我的问题的第二部分是可选的。如何创建一个包含上述向量元素的字母组合的向量,并且结果组合中的字母将仅按照原始单词中的顺序排列?例如,我想在这个向量中得到类似“puter”或“mpu”的东西,而不是“tumpo”。

【问题讨论】:

    标签: r vector split


    【解决方案1】:

    问题的第一部分真的很容易得到:

    splits <- unlist(strsplit("computer",split=""))
    
    > splits
    [1] "c" "o" "m" "p" "u" "t" "e" "r"
    

    对于第二部分,您可以使用以下代码:

    subseqs <- 
      unlist(
        lapply(1:length(splits),FUN=function(x){
          lapply(1:(length(splits)+1-x),FUN=function(y){ 
            paste(splits[y:(y+x-1)],collapse="") })
        })
      )
    > subseqs
     [1] "c"        "o"        "m"        "p"        "u"        "t"        "e"       
     [8] "r"        "co"       "om"       "mp"       "pu"       "ut"       "te"      
    [15] "er"       "com"      "omp"      "mpu"      "put"      "ute"      "ter"     
    [22] "comp"     "ompu"     "mput"     "pute"     "uter"     "compu"    "omput"   
    [29] "mpute"    "puter"    "comput"   "ompute"   "mputer"   "compute"  "omputer" 
    [36] "computer"
    

    【讨论】:

      【解决方案2】:

      你可以使用

      strsplit("computer", "\\b")
      

      library("RWeka")
      gsub(" ", "", 
           NGramTokenizer(paste(strsplit("computer", "\\b")[[1]], collapse=" "), 
                          Weka_control(min=2, 
                                       max=5)),
           fixed=TRUE)  
      # [1] "compu" "omput" "mpute" "puter" "comp" 
      # [6] "ompu"  "mput"  "pute"  "uter"  "com"  
      # [11] "omp"   "mpu"   "put"   "ute"   "ter"  
      # [16] "co"     "om"    "mp"    "pu"    "ut"   
      # [21] "te"    "er"   
      

      用 2

      【讨论】:

        【解决方案3】:

        对于三个连续的字母组合:

        x <- strsplit("computer", "\\b")
        y <- combn(seq(x),3); m <- match(1:6,y[1,])
        combn (x,3)[,m]
        

        【讨论】:

          猜你喜欢
          • 2019-09-10
          • 2014-10-24
          • 1970-01-01
          • 2022-06-15
          • 2021-04-14
          • 2016-08-30
          • 2014-12-19
          • 2015-01-17
          • 2018-05-22
          相关资源
          最近更新 更多