この例のような文字列のアドレスを編集したいと思います:
test = c("[Mavlyanova, Nadira G.] Uzbek Acad Sci, GA Mavlyanov Inst Seismol, Tashkent 700135, Uzbekistan; [Markovic, Slobodan B.] Univ Novi Sad, Fac Sci, Chair Phys Geog, Novi Sad 21000, Serbia; [Rowell, G.] Univ Adelaide, Sch Chem & Phys, Adelaide, SA 5005, Australia; [Katarzynski, K.] Nicholas Copernicus Univ, Torun Ctr Astron, PL-87100 Torun, Poland; [Ansari, Z.; Boettcher, M.; Manschwetus, B.; Rottke, H.; Sandner, W.] Max Born Inst, D-12489 Berlin, Germany; [Milosevic, D. B.] Univ Sarajevo, Fac Sci, Sarajevo 71000, Bosnia & Herceg")
国名だけを取得したい。これは私がこれまでに試したことです:
> testa <- gsub("\\[.*?\\] ", "", test) #remove square brackets
> testa <- strsplit(testa, ";", fixed = TRUE) #split adresses
> testa <- sapply(testa, function(x) gsub("^.*, ([A-Za-z ]*)$", "\\1", x)) #keep only what's after last comma
> testa <- gsub("^ | $", "", testa) #remove spaces
> testa
[,1]
[1,] "Uzbekistan"
[2,] "Serbia"
[3,] "Australia"
[4,] "Poland"
[5,] "Germany"
[6,] "Univ Sarajevo, Fac Sci, Sarajevo 71000, Bosnia & Herceg"
残念ながら、これは最後のアドレスでは機能しません。代わりに次の出力を取得したいと思います。
> testa
[,1]
[1,] "Uzbekistan"
[2,] "Serbia"
[3,] "Australia"
[4,] "Poland"
[5,] "Germany"
[6,] "Bosnia & Herceg"
私の質問は次のとおりです。
- sapply-function の最後のアドレスでも正しく動作しないエラーは何ですか?
- 正しい出力を達成するためにどのように改善できますか?