簡體   English   中英

從字符串中提取字符

[英]Extracting character from string

我有一個字符串可以說

text1 <- "John K Doe"

我想返回:

"John Doe"

"J K Doe"

我使用了strsplitpastesubstr ,如下所示:

paste(strsplit(text1, " ")[[1]][1], strsplit(text1, " ")[[1]][3])
[1] "John Doe"

paste(substr(text1, 1, 1), strsplit(text1, " ")[[1]][2], strsplit(text1, " ")[[1]][3])
[1] "J K Doe"

如您所見,此返回結果是我所期望的。 但是,我想看看是否有任何簡單或更有效的方法來做到這一點。

謝謝,我感謝所有支持和幫助。

使用strsplit()的另一種方法是對gsub()使用正則表達式。 如果您希望以后有一些更復雜的規則來提取名稱和縮寫,則此選項可能會更有用。

x <- "John K Doe"

gsub("^(\\w+) \\w (\\w+)$", "\\1 \\2", x)
[1] "John Doe"

gsub("^(\\w)\\w* (\\w) (\\w+)$", "\\1 \\2 \\3", x)
[1] "J K Doe"

這是一種與您的方法大體相似的方法,但僅一次strsplit一次

sapply(strsplit(text1," "), function(a) paste(a[1],a[3]))
#OR
sapply(strsplit(text1," "), function(a) paste(a[-2], collapse = " "))
#[1] "John Doe"

sapply(strsplit(text1," "), function(a) paste(substr(a[1],1,1),a[2],a[3]))
#[1] "J K Doe"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM