在R中的破折号之前提取字符串

extract string before dash in R

我有一列名称,格式是AAA和AAA-D的混合格式。我想在破折号之前提取名称(如果它有破折号)或保留非破折号的名称。 该列表是

Name
W1-D1
Empty
W2-D1

我要提取的是

Name
W1
Empty
W2

我发现了几个像 v1<-gsub("^(.*?)-.*", "\1",v) 这样的语法,但这在我的列表中不起作用,我在 v1 中得到了这个“c(\"W1"。我使用这个语法错了吗?

下面的正则表达式就可以做到。

sub("(^[^-]+)-.*", "\1", Name)
#[1] "W1"    "Empty" "W2" 

数据.

Name <- scan(what = character(), text ="
W1-D1
Empty
W2-D1
")

你也可以使用 stringr

library(stringr)

v2<-str_extract(v, "[^-]+")