大佬教程收集整理的这篇文章主要介绍了如何向向量给出的矩阵添加前缀?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
让我们考虑矩阵:
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"
你知道我做错了什么吗?解决这个问题的方法是什么?
这是使用 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,请注明来意。