我必须在一个新字符串中写下包含9个单词的字符串的所有首字母。 有没有比这更好的方法:
eg <- "This is a test I developed"
temp.eg <- strsplit(eg,' ')[[1]]
temp.eg <- substr(temp.eg, 0, 1)
new.eg <- paste(temp.eg, collapse = "")
另外,是否有另一种分割字符串的方法,所以我不必使用:
strsplit() [[1]]
答案 0 :(得分:3)
您可以使用gsub提取第一个字母和单词边界(\\b
):
gsub("\\b(\\w)(\\b|(\\w+))( |$)", "\\1", eg)
[1] "TiatId"
说明:您要求提供&#34;字&#34;字符边界之后的字符(\\w
),后跟字边界或更多单词字符,然后是空格或字符串的结尾($
)。
@lukeA提供的另一个选项:
gsub("(?<!\\b).|\\s", "", eg, perl=TRUE)
[1] "TiatId"
它使用look-behind(?<!
:之前不得...... )来&#34;抑制&#34; (用空字符串替换)任何不是字边界的任何东西或空格。
答案 1 :(得分:3)
要避免[[
子集,我们可以使用unlist
,其余代码看起来很好:
paste(substr(unlist(strsplit(eg, " ")), 1, 1), collapse = "")
# [1] "TiatId"
如果我们有多个字符串:
egLong <- c("This is a test I developed", "another test me")
sapply(strsplit(egLong, " "), function(i){
paste(substr(i, 1, 1), collapse = "")
})
# [1] "TiatId" "atm"