如何从列表中的字符串开头删除多个字符?

How do I remove multiple characters from the beginning of strings in a list?

假设我有以下字符串 -

some_list <- c("cs_m_string1", "m_string2", "string3_d", "string4_h")

我希望能够指定要从 some_list 中的字符串开头删除的字符列表。例如我想指定一个列表,例如remove_beg <- c("cs_m_", "m_") ,从列表中的字符串开头删除并得到这个结果-

"string1" "string2" "string3_d" "string4_h"

此外,在一个单独的操作中,我希望能够对字符串末尾的字符做同样的事情,所以指定一个列表,例如 remove_end <- c("_d", "_h"),并得到这个结果 -

"cs_m_string1" "m_string2" "string3" "string4"

我可以使用 some_list %>% str_remove_all("^cs_m_") 一次删除 1 个字符,但我有一个很大的列表并且想指定一次删除多个字符。

一种选择是使用 paste0 将要删除的字符列表折叠成一个字符串,然后您可以直接将其放入 str_remove_all.

library(stringr)

remove_list <- c("cs_m_", "m_")
paste_list <- paste0("^", remove_list, collapse = "|")

some_list %>% 
  str_remove_all(paste_list)

#[1] "string1"   "string2"   "string3_d" "string4_h"