R 从第n个最后一个分离器至末端移除管柱
我有以下字符串:R 从第n个最后一个分离器至末端移除管柱,r,string,split,tail,separator,R,String,Split,Tail,Separator,我有以下字符串: data_string = c("Aa_Bbbbb_0_ID1", "Aa_Bbbbb_0_ID2", "Aa_Bbbbb_0_ID3", "Ccccc_D_EEE_0_ID1") 我只想拆分所有字符串以获得以下结果: "Aa_Bbbbb" "Aa_Bbbbb" "Aa_Bbbbb" "Ccccc_D_EEE" 因此,基本上,我正在寻找一个函数,它接受数据字符串,设置分隔符,并采
data_string = c("Aa_Bbbbb_0_ID1",
"Aa_Bbbbb_0_ID2",
"Aa_Bbbbb_0_ID3",
"Ccccc_D_EEE_0_ID1")
我只想拆分所有字符串以获得以下结果:
"Aa_Bbbbb"
"Aa_Bbbbb"
"Aa_Bbbbb"
"Ccccc_D_EEE"
因此,基本上,我正在寻找一个函数,它接受数据字符串,设置分隔符,并采取拆分位置:
remove_tail(data_table, sep = '_', del = 2)
仅移除从最后第二个分隔符到字符串末端的尾部(不拆分所有字符串)使用
gsub
gsub(“\u 0.*”,“”,数据字符串)
请尝试以下操作:
# split on "_" then paste back removing last 2
sapply(strsplit(data_string, "_", fixed = TRUE),
function(i) paste(head(i, -2), collapse = "_"))
我们可以实现自己的功能:
# custom function
remove_tail <- function(x, sep = "_", del = 2){
sapply(strsplit(x, split = sep, fixed = TRUE),
function(i) paste(head(i, -del), collapse = sep))
}
remove_tail(data_string, sep = '_', del = 2)
# [1] "Aa_Bbbbb" "Aa_Bbbbb" "Aa_Bbbbb" "Ccccc_D_EEE"
#自定义函数
删除\u tail我们也可以使用sub
tp匹配\u
后跟一个或多个数字(\\d+
)和其余字符,将其替换为空白(“”
)
为什么不在“\uquot
上拆分,然后粘贴回前2页?或者在“\u 0”
上拆分?我的示例不正确。我刚刚纠正了它;如果存在“A_B_C_D_0_ID3”
,您可以看到第一个解决方案不起作用。是的,spli on“\u 0\u”
工作正常,但我不确定是否总是在字符串中使用此标志
sub("_\\d+.*", "", data_string)
#[1] "Aa_Bbbbb" "Aa_Bbbbb" "Aa_Bbbbb" "Ccccc_D_EEE"