【问题标题】:Function turning a string into acronym in R在R中将字符串转换为首字母缩写词的函数
【发布时间】:2021-05-11 06:23:22
【问题描述】:

我有一个字符串“California Art Craft Painting Society”,我想在 R 中编写一个函数 x,它可以将任何字符串转换为首字母缩写词“CACPS”。我使用了以下代码:

acronym <- function(x){
  abbreviate(x)
}  

有没有办法用stringr写函数比如先strsplit字符串,然后用strsub拉取每个单词的第一个字母(不使用abbreviate)?

【问题讨论】:

  • 为什么不直接使用abbreviate?我认为abbreviate(x, minlength = 1) 是您问题的完美解决方案..

标签: r function stringr abbreviation acronym


【解决方案1】:

如果你想使用字符串拆分方法,试试这个

acronym <- function(x) {
  sapply(strsplit(x, ' '), function(y) paste0(substr(y, 1, 1), collapse = ''))
}

acronym(c("California Art Craft Painting Society", 'A Big Word'))
#[1] "CACPS" "ABW" 

或者使用stringr

library(purrr)
library(stringr)

acronym <- function(x) {
  map_chr(str_split(x, ' '), function(y) str_c(str_sub(y, 1, 1), collapse = ''))
}

【讨论】:

    【解决方案2】:

    这可能有用。它对前面没有分词符的字符使用str_remove_all,并删除所有空格。

    library(stringr)
    
    create_acronym <- function(x){
          str_remove_all(x , "(?<!\\b)\\w|\\s" ) 
        }
    

    【讨论】:

      【解决方案3】:

      gsub 选项

      > gsub("\\b([A-Z])(\\w+)?\\s?", "\\1", v)
      [1] "CACPS" "ABW"
      

      数据

      v <- c("California Art Craft Painting Society", "A Big Word")
      

      【讨论】:

        【解决方案4】:

        恕我直言,最简单(也是最简洁)的选项如下:

        abbreviate(x, minlength = 1)
        

        【讨论】:

        • 赞成您的回答,尽管 OP 可能对其他解决方法感兴趣 :)
        猜你喜欢
        • 2013-12-17
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        相关资源
        最近更新 更多