我有一个名称列,格式是 AAA 和 AAA-D 混合的。我想提取破折号之前的名称(如果有破折号)或保留非破折号名称。\n列表是
\n\nName\nW1-D1\nEmpty\nW2-D1\nRun Code Online (Sandbox Code Playgroud)\n\n我想提取的是
\n\nName\nW1\nEmpty\nW2\nRun Code Online (Sandbox Code Playgroud)\n\n我发现了几种语法,例如v1<-gsub("^(.*?)-.*", "\\\\1",v) 但这在我的列表中不起作用,我在 v1 中得到了 \xe2\x80\x9cc(\\"W1" 。我是否使用了此语法错误?
小智 8
您也可以使用 stringr
library(stringr)
v2<-str_extract(v, "[^-]+")
Run Code Online (Sandbox Code Playgroud)
下面的正则表达式可以做到这一点。
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)