2017-10-13 57 views
0

我有名字的向量,看起來像這樣:一個字符後有條件刪除部分字符串中的R

names <- c("Verticordia (Cha)", "Whiteodendron\n(Loph)", "Platysace", 
"Xanthostemon\n(Xan)", "Quercus (incl.\nCyclobalanopsis)\n(Fag)" 
) 
[1] "Verticordia (Cha)"      "Whiteodendron\n(Loph)"     "Platysace"        "Xanthostemon\n(Xan)"      
[5] "Quercus (incl.\nCyclobalanopsis)\n(Fag)" 

我想空格或\後有條件地刪除thatcome所有字符,其中包括空間還是\。我已經能夠去除\或使用空間:

gsub("\n*","",names) 
gsub(" *","",names) 

不過,我有麻煩的代碼刪除所有下列字符爲好。

回答

2
gsub("\n.*","",names) 
gsub(" .*","",names) 

你想星號量詞應用於點(這是一個匹配所有字符的通配符)。您的版本將quantifer應用於換行符或空格字符,因此您只刪除了連續的換行符或空格字符串。

1

或全部1點的正則表達式:

names.reduced <- gsub('[ \\\n].*', '', names) 

[1] "Verticordia" "Whiteodendron" "Platysace"  "Xanthostemon" "Quercus"  
+0

感謝這麼多。它驚人的多麼不透明的正則表達式對我來說。看這個代碼,沒有什麼直觀的,哈。 – colin

+1

正則表達式很棒,但它們確實是一種編程語言。秒開始使用,多年掌握。 – jdobres

相關問題