有条件地删除R中字符后的字符串的一部分

时间:2017-10-13 21:09:13

标签: r string

我有一个名字的矢量,如下所示:

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)"

我想有条件地删除空格或\之后的所有字符,包括空格或\。我可以使用

删除\或空格
gsub("\n*","",names)
gsub(" *","",names)

但是,我在获取代码时也无法删除所有后续字符。

2 个答案:

答案 0 :(得分:2)

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

您希望星号量词应用于点(这是一个匹配所有字符的通配符)。您的版本将quantfer应用于换行符或空格字符,因此您只删除了连续换行符或空格字符串。

答案 1 :(得分:1)

或全部在1个正则表达式中:

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

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