我有一列名称,格式混合了AAA和AAA-D。我想在破折号之前提取名称(如果有破折号)或保留非破折号。 列表是
Name
W1-D1
Empty
W2-D1
我要提取的是
Name
W1
Empty
W2
我发现了类似v1<-gsub("^(.*?)-.*", "\\1",v)
的几种语法,但是这在我的列表中不起作用,我在v1中得到了这个“ c(\“ W1”。我使用的语法有误吗?
答案 0 :(得分:1)
下面的正则表达式可以做到这一点。
sub("(^[^-]+)-.*", "\\1", Name)
#[1] "W1" "Empty" "W2"
数据。
Name <- scan(what = character(), text ="
W1-D1
Empty
W2-D1
")
答案 1 :(得分:1)
您也可以使用stringr
library(stringr)
v2<-str_extract(v, "[^-]+")