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

Dan*_*Zhu 9 string r extract

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

\n\n
Name\nW1-D1\nEmpty\nW2-D1\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想提取的是

\n\n
Name\nW1\nEmpty\nW2\n
Run Code Online (Sandbox Code Playgroud)\n\n

我发现了几种语法,例如v1<-gsub("^(.*?)-.*", "\\\\1",v) 但这在我的列表中不起作用,我在 v1 中得到了 \xe2\x80\x9cc(\\"W1" 。我是否使用了此语法错误?

\n

小智 8

您也可以使用 stringr

library(stringr)

v2<-str_extract(v, "[^-]+")
Run Code Online (Sandbox Code Playgroud)


Rui*_*das 2

下面的正则表达式可以做到这一点。

sub("(^[^-]+)-.*", "\\1", Name)
#[1] "W1"    "Empty" "W2" 
Run Code Online (Sandbox Code Playgroud)

数据。

Name <- scan(what = character(), text ="
W1-D1
Empty
W2-D1
")
Run Code Online (Sandbox Code Playgroud)