如何用分隔符拆分r中的字符串并丢弃最后两个项目?

nac*_*cab 3 r stringr

我有一个字符串分隔_,我想摆脱最后两个元素.例如,从A_B_C_D我想要返回A_B,从A_B_C_D_E我想要A_B_C.我试图str_split_fixedstringr:

my_string <- "A_B_C_D"
x <- str_split_fixed(my_string,"_",3) 
Run Code Online (Sandbox Code Playgroud)

但它返回"A" "B" "C_D"的不是 "A_B" "C" "D",否则我可以做head(x,-2)来获得A_B

有没有比这更好的方法

paste(head(unlist(strsplit(my_string,"_")),-2),collapse="_")
Run Code Online (Sandbox Code Playgroud)

Jus*_*tin 7

如何使用正则表达式:

sub('(_[A-Z]){2}$', '', 'A_B_C_D')
Run Code Online (Sandbox Code Playgroud)

数字2是你想要下降的长度.

  • 太棒了,虽然我会把它变得更通用`sub('(_ [^ _] +){2} $','','AA_BB_C-C_DD')#AA_BB` (3认同)
  • 有趣的是,我们当中有多少人为正则表达式回答了这个问题.任何进行数据解析的人都需要将正则表达式作为已建立的工具箱最爱. (2认同)