【问题标题】:Split strings by a specific range in R按 R 中的特定范围拆分字符串
【发布时间】:2021-05-01 05:24:47
【问题描述】:

我想一次将一个字符串对象拆分为两个字符串,直到它们到达最后一个字符串。

假设您有字符串“BANANAS”,我想将字符串拆分为两个获得 BA AN NA AN NA AS。

【问题讨论】:

    标签: r string split


    【解决方案1】:

    一种方法是拆分字符串。

    split_string <- function(x) {
      lapply(strsplit(x, ''), function(x) paste0(head(x, -1), tail(x, -1)))  
    }
    split_string(c('BANANAS', 'APPLE'))
    
    #[[1]]
    #[1] "BA" "AN" "NA" "AN" "NA" "AS"
    
    #[[2]]
    #[1] "AP" "PP" "PL" "LE"
    

    【讨论】:

      【解决方案2】:

      我们可以使用

      split_string <- function(x) {
         lapply(strsplit(x, ""), function(x) paste0(x[-length(x)], x[-1]))
      }
      

      -输出

      split_string(v1)
      #[[1]]
      #[1] "BA" "AN" "NA" "AN" "NA" "AS"
      
      #[[2]]
      #[1] "AP" "PP" "PL" "LE"
      

      或者我们可以使用正则表达式环顾而无需拆分

      out <- gsub('(?<=.)(.)(?=.)', '\\1 \\1', v1, perl = TRUE)
      out
      #[1] "BA AN NA AN NA AS" "AP PP PL LE"   
      

      如果我们需要单独的子串,用空格分割

      strsplit(out, "\\s+")
      

      数据

      v1 <- c("BANANAS", "APPLE")
      

      【讨论】:

        【解决方案3】:
        > string <- "BANANAS"
        
        > # split and use embed
        > x <- embed(str_split(string, '')[[1]], 2)[, 2:1] # reverse columns
        
        > apply(x, 1, paste, collapse = '')
        [1] "BA" "AN" "NA" "AN" "NA" "AS"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-18
          • 2023-03-23
          • 2015-08-30
          • 1970-01-01
          • 2014-07-22
          • 2023-03-12
          • 2018-10-23
          相关资源
          最近更新 更多