提问人:Simon Harmel 提问时间:9/24/2023 最后编辑:bobble bubbleSimon Harmel 更新时间:9/25/2023 访问量:48
匹配两个字符串向量,不考虑元素名称的顺序
Matching two string vectors disregarding the order of the element names
问:
下面,我想要两个字符串向量:我的向量和我的向量,如下所示:match()
first
second1
( desired_output = match(first, second1) ) #> [1] 4 5 1 6 2 3
但是我的向量可以有相反的两部分字符串元素,例如而不是像我的向量中所示那样。second1
"perf.acog"
"acog.perf"
second2
问题:我们能产生与实际产量相同的输出吗?match(first, second2)
match(first, second1)
注意:由两部分组成的字符串元素可以通过其中定义的任何分隔符连接,例如(例如)、(例如)等。因此,一般/功能性答案是值得赞赏的。"[^[:alnum:]]+"
"."
"perf.acog"
"_"
"perf_acog"
first = c("asom.acog", "conf.acog", "perf.acog", "conf.asom", "perf.asom",
"perf.conf")
second1 = c("perf.acog", "perf.asom", "perf.conf", "asom.acog", "conf.acog",
"conf.asom")
second2 = c("acog.perf", "asom.perf", "conf.perf", "acog.asom", "acog.conf",
"asom.conf")
答:
1赞
Andre Wildberg
9/24/2023
#1
在字符串上使用非单词字符。rev
strsplit
\\W
编辑:在分隔符泛化中还包括“第一”,以便在两个字符串都可以有任何非字符分隔符的情况下启用匹配。
match(sub("\\W", "", first), lapply(strsplit(second2, "\\W"),
\(x) paste(rev(x), collapse="")))
[1] 4 5 1 6 2 3
测试:
identical(
match(first, second1),
match(sub("\\W", "", first), lapply(strsplit(second2, "\\W"),
\(x) paste(rev(x), collapse=""))))
[1] TRUE
评论
0赞
Andre Wildberg
9/25/2023
@SimonHarmel我专注于“secondX”,请参阅编辑“first”是否也可能包含不同的分隔符。
上一个:从向量中提取字符元素
下一个:粘贴两个字符串以实现所需的组合
评论