【发布时间】:2021-04-28 09:11:38
【问题描述】:
让我们考虑以下矩阵:
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"(如果存在)。
所以我想结束:
[,1] [,2] [,3]
[1,] "A" "E" "K"
[2,] "B" "F" "J"
[3,] "C" "O" "Letter"
我的第一个想法是使用代码:
> 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"(代码看不到它,因为“组”后面有两个数字)。如果我要
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_,但会留下其他的。
当然我可以在这种情况下做一些事情,但它不是那么优雅的解决方案(如果我有更多的整数呢?例如group11234_)
有没有可能简单地做到这一点?
【问题讨论】:
-
组后数字使用通配符