簡體   English   中英

從R中的句子中提取單詞

[英]extracting a word from a sentence in R

我正在嘗試提取緊跟某些字母的單詞。 例如,在此示例中,我嘗試提取“ AB”后的單詞

x = c("So much fun - AB22148",                       
"AC33648 does whatever",                           
"I know -AB11025 Failed",                   
"Nothing stalled - AB16228",        
"Unable to do fdS2083D - Ab26604")

Num = character(0)
for (i in 1:length(x)) {
   y = unlist(strsplit(x[i]," "))
   Num[i] = grep("AB",y, perl = T, value = T, ignore.case = T)
  }

有幾個問題(您可能會說):1.如果不存在“ AB”,則我會報錯,因為Num不能取零長度。 2.如果我克服了這個問題(例如,用AB替換AC),則第5個輸入將使我“無法使用”,而不是“ Ab26604”。

我要尋找的是:1.是否可以不使用循環來完成(也許使用apply函數之一)2.如何處理第3和第5種情況的情況? [我想刪除'-'符號(我可以在下一步中解決這個問題,但想知道是否可以同時完成)]

   Num (current output)
  [1] "AB22148"  " "  "-AB11025" "AB16228"  "Unable" 

  Num (required output)
 [1] "AB22148"  " "  "AB11025" "AB16228"  "Ab26604" 

感謝您的所有幫助。 我真的很感激。 請讓我知道是否需要其他說明

您可以執行以下操作:

require(stringr)
str_extract(x, regex("AB[:alnum:]{5}", ignore_case = TRUE))

這給你:

"AB22148" NA        "AB11025" "AB16228" "Ab26604"

如果您想將NA替換為" " ,則可以執行以下操作:

str_replace_na(tmp, " ") # assuming tmp is the result from above

這給你:

"AB22148" " "       "AB11025" "AB16228" "Ab26604"

暫無
暫無

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

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