1

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

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

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

4

4 回答 4

2

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

abbreviate(x, minlength = 1)
于 2021-05-11T08:30:23.767 回答
2

一个gsub选项

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

数据

v <- c("California Art Craft Painting Society", "A Big Word")
于 2021-05-11T08:27:30.130 回答
2

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

library(stringr)

create_acronym <- function(x){
      str_remove_all(x , "(?<!\\b)\\w|\\s" ) 
    }
于 2021-05-11T08:18:24.510 回答
2

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

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 = ''))
}
于 2021-05-11T06:25:45.743 回答