我需要将部门名称缩写为首字母,以便strDept="Department of Justice"
成为strDeptAbbr = "DoJ".
如何使用stringr
缩写字符串?
谢谢
答案 0 :(得分:19)
使用base R
,您可以执行以下操作:
abbreviate("Department of Justice", 1, named = FALSE)
[1] "DoJ"
答案 1 :(得分:4)
您可以使用:
library(stringr)
x="Department of Justice"
new_list=strsplit(x, " ")
str_sub(as.list(new_list[[1]]),1,1)
@tmfmnk先前的回答在我看来要好得多。
编辑:
正如@Lyngbakr指出的那样,以下代码将产生请求的最终结果:
paste(str_sub(as.list(new_list[[1]]),1,1), collapse = "")
答案 2 :(得分:2)
另一种但过于“复杂”的base
解决方案:
paste(unlist(lapply(strsplit(strDept," "),function(x) substring(x,1,1))),collapse = "")
#[1] "DoJ"
您可以避免使用@Lyngbakr建议的lapply
:
paste(substring(unlist(strsplit(strDept," ")), 1, 1),
collapse = "")
[1] "DoJ"
如果您要坚持使用stringr
:
paste(substring(stringr::str_split(strDept, pattern = " ", simplify = TRUE), 1, 1), collapse = "")
答案 3 :(得分:1)
我真的很喜欢@tmfmnk解决方案,但是如果您要坚持使用Strings,则可以使用以下方法:
library(purrr)
library(stringr)
x = "Department of Justice"
x %>%
str_split(pattern = " ") %>%
map(str_trunc, 1, ellipsis = "") %>%
map(str_c, collapse="") %>%
flatten_chr()
[1] "DoJ"