【问题标题】:How to apply the function substr to each element of a string如何将函数 substr 应用于字符串的每个元素
【发布时间】:2021-10-08 05:32:35
【问题描述】:

我有这串字

string<-c("chair-desk-tree-table-computer-mousse")

我想检索每个单词的前三个字符并将它们存储在这样的对象中:

newstring==> [1] "cha-des-tre-tab-com-mou"

【问题讨论】:

    标签: r string substr


    【解决方案1】:
    > newstring <- substring( strsplit(string, "-")[[1]], 1, 3)
    > newstring <- paste0(newstring, collapse = "-")
    > newstring
    [1] "cha-des-tre-tab-com-mou"
    

    【讨论】:

      【解决方案2】:

      使用 gsub 和正则表达式环视来匹配一个或多个位于 3 个小写字母之前的小写字母

      gsub("(?<=\\b[a-z]{3})[a-z]+", "", string, perl = TRUE)
      [1] "cha-des-tre-tab-com-mou"
      

      使用编辑后的字符串

      > string <- c(string, "K29-E665-I1190")
      > gsub("(?<=\\b[[:alnum:]]{3})[[:alnum:]]+", "", string, perl = TRUE)
      [1] "cha-des-tre-tab-com-mou" "K29-E66-I11"     
      

      【讨论】:

      • 其实我真正的字符串不只是由字母组成,还有数字和大写字母
      • @SeydouGORO 然后将其更改为[A-Za-z] 而不是[a-z]
      • 再次感谢您,但[A-Za-z] 似乎没有考虑到帐号
      • @SeydouGORO 对不起,我不知道你的实际情况。如果有数字,您需要[[:alnum:]] 而不是[A-Za-z]
      • @SeydouGORO 是您想要的更新输出
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2021-05-25
      • 2016-02-02
      • 2014-09-24
      相关资源
      最近更新 更多