如何删除矩阵中字符串的开头? 让我们考虑矩阵跟随: example_matrix <- matrix(c("group1_A", "group2_B", "C", "group11_E", "group3_F", "O", "K", "J", "Letter"), ncol = 3, nrow = 3) [,1] [,2] [,3] [1,] "group1_A" "group11_E" "K" [2,] "group2_B" "group3_F" "J" [3,] "C" "O" "Letter"
我的第一个想法是使用代码:如何删除矩阵中字符串的开头? 让我们考虑矩阵跟随: example_matrix <- matrix(c("group1_A", "group2_B", "C", "group11_E", "group3_F", "O", "K", "J", "Letter"), ncol = 3, nrow = 3) [,1] [,2] [,3] [1,] "group1_A" "group11_E" "K" [2,] "group2_B" "group3_F" "J" [3,] "C" "O" "Letter",r,string,matrix,R,String,Matrix,我的第一个想法是使用代码: > apply(example_matrix, 2, function(x) gsub("group\\d_", "", x)) [,1] [,2] [,3] [1,] "A" "group11_E" "K" [2,] "B" "F" "J"
> apply(example_matrix, 2, function(x) gsub("group\\d_", "", x))
[,1] [,2] [,3]
[1,] "A" "group11_E" "K"
[2,] "B" "F" "J"
[3,] "C" "O" "Letter"
但正如您所看到的,其中有“group_11”
(代码没有看到它,因为“group”后面有两个数字)。如果我愿意
apply(example_matrix, 2, function(x) gsub("group\\d\\d_", "", x))
[,1] [,2] [,3]
[1,] "group1_A" "E" "K"
[2,] "group2_B" "group3_F" "J"
[3,] "C" "O" "Letter"
然后它将正确地更改group11
,但是会留下其他的
当然,对于这种情况,我可以做一些if,但是这不是一个很好的解决方案(如果我有更多的整数怎么办?例如,group11234
)
是否可以简单地执行此操作?您可以简单地在
\\d
之后使用sub
和+
并以^
开头
sub("^group\\d+_", "", example_matrix)
# [,1] [,2] [,3]
#[1,] "A" "E" "K"
#[2,] "B" "F" "J"
#[3,] "C" "O" "Letter"
在给定的情况下,在之前删除所有内容也可以:
sub(".*_", "", example_matrix)
# [,1] [,2] [,3]
#[1,] "A" "E" "K"
#[2,] "B" "F" "J"
#[3,] "C" "O" "Letter"
您只需在\\d
之后使用sub
和+
并以^
开头即可
sub("^group\\d+_", "", example_matrix)
# [,1] [,2] [,3]
#[1,] "A" "E" "K"
#[2,] "B" "F" "J"
#[3,] "C" "O" "Letter"
在给定的情况下,在之前删除所有内容也可以:
sub(".*_", "", example_matrix)
# [,1] [,2] [,3]
#[1,] "A" "E" "K"
#[2,] "B" "F" "J"
#[3,] "C" "O" "Letter"
组后数字使用通配符组后数字使用通配符
apply(example_matrix[], 2, function(x) gsub("^[^A-Z]+", "", x))