程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何向向量给出的矩阵添加前缀?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何向向量给出的矩阵添加前缀??

开发过程中遇到如何向向量给出的矩阵添加前缀?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何向向量给出的矩阵添加前缀?的解决方法建议,希望对你解决如何向向量给出的矩阵添加前缀?有所启发或帮助;

让我们虑矩阵:

example_matrix <- matrix(c("big","small","big_something","small_really","big_enough","themendous","big","small"),ncol = 3,nrow = 3) 

> example_matrix
     [,1]            [,2]           [,3]        
[1,] "big"           "small_really" "themendous"
[2,] "small"         "small"        "big"       
[3,] "big_something" "big_enough"   "small" 

还有一些向量:

group_vector <- c("group1_big","group2_small")

这个向量显示矩阵中的哪些词我应该给前缀group。我们应该得到:

     [,3]          
[1,] "group1_big"    "small_really" "themendous"  
[2,] "group2_small"  "group2_small" "group1_big"  
[3,] "big_something" "big_enough"   "group2_small"

即我们将 "big" 中的每个 example_matrix 替换为 group1_big,将 "small" 替换为 "group2_small" 而不触及"big_enough,small_really"(只是完全替换 "big""small").

我的想法

让我们虑第一种情况,即将每个 "big" 替换为 "group1_big"。我的想法是检查 example_matrix 中哪些元素以 "big" 结尾并为每个元素添加前缀 "group_1"

> apply(example_matrix,2,function(X) endsWith(x,"big"))
      [,1]  [,2]  [,3]
[1,]  TRUE falSE falSE
[2,] falSE falSE  TRUE
[3,] falSE falSE falSE

我的想法是如何替换它的:

 apply(example_matrix,function(X) if endsWith(x,"big") paste0(group_vector[1],X) else X)

所以要设置条件 - 如果特定元素确实以“big”结尾,那么我们添加前缀,如果不是 - 我们保留它。

然而这段代码会产生错误:

Error: unexpected symbol in "apply(example_matrix,function(X) if endsWith"

你知道我做错了什么吗?解决这个问题的方法是什么?

解决方法

@H_607_78@

这是使用 str_replace_all 中的 Stringr 的一种方法:

example_matrix[] <- Stringr::str_replace_all(example_matrix,setNames(group_vector,sprintf('\\b%s\\b',sub('group\\d+_','',group_vector))))

example_matrix
#       [,1]            [,2]           [,3]          
#[1,] "group1_big"    "small_really" "themendous"  
#[2,] "group2_small"  "group2_small" "group1_big"  
#[3,] "big_something" "big_enough"   "group2_small"
@H_607_89@

要理解这一点,请将其分解为更小的步骤 -

sub'group' 中删除 group_vector + 数字。

sub('group\\d+_',group_vector)
#[1] "big"   "small"

我们为此添加了一个词边界,以便它只匹配完全匹配 ('big') 不匹配 ('big_something') 的模式。

sprintf('\\b%s\\b',group_vector))
#[1] "\\bbig\\b"   "\\bsmall\\b"

现在创建一个可以在 str_replace_all 中使用的命名向量:

setNames(group_vector,group_vector)))

#     \\bbig\\b    \\bsmall\\b 
#  "group1_big" "group2_small" 

大佬总结

以上是大佬教程为你收集整理的如何向向量给出的矩阵添加前缀?全部内容,希望文章能够帮你解决如何向向量给出的矩阵添加前缀?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。