Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从第n个最后一个分离器至末端移除管柱_R_String_Split_Tail_Separator - Fatal编程技术网

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"