首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除矩阵中字符串的开头?

如何删除矩阵中字符串的开头?
EN

Stack Overflow用户
提问于 2021-04-28 17:11:39
回答 3查看 24关注 0票数 1

让我们考虑下面的矩阵:

代码语言:javascript
复制
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"

我想要做的是删除前面的"group"中的矩阵元素。

因此,我想以以下方式结束:

代码语言:javascript
复制
     [,1] [,2] [,3]    
[1,] "A"  "E"  "K"     
[2,] "B"  "F"  "J"     
[3,] "C"  "O"  "Letter"

我的第一个想法是使用代码:

代码语言:javascript
复制
> 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”后面有两个数字)。如果我想

代码语言:javascript
复制
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_)

有没有可能简单地做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-28 17:18:10

您可以简单地使用sub,在\\d之后使用+,并以^开头。

代码语言:javascript
复制
sub("^group\\d+_", "", example_matrix)
#     [,1] [,2] [,3]    
#[1,] "A"  "E"  "K"     
#[2,] "B"  "F"  "J"     
#[3,] "C"  "O"  "Letter"

在给定的情况下,删除所有内容,直到_也可以工作:

代码语言:javascript
复制
sub(".*_", "", example_matrix)
#     [,1] [,2] [,3]    
#[1,] "A"  "E"  "K"     
#[2,] "B"  "F"  "J"     
#[3,] "C"  "O"  "Letter"
票数 2
EN

Stack Overflow用户

发布于 2021-04-28 17:18:18

代码语言:javascript
复制
apply(example_matrix, 2, function(x)  gsub("group\\d+_", "", x))
票数 1
EN

Stack Overflow用户

发布于 2021-04-28 17:22:31

代码语言:javascript
复制
apply(example_matrix[], 2, function(x) gsub("^[^A-Z]+", "", x))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67297227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档