Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何匹配R中两个向量的倒序_R_Pattern Matching - Fatal编程技术网

如何匹配R中两个向量的倒序

如何匹配R中两个向量的倒序,r,pattern-matching,R,Pattern Matching,我有两个向量 key.vec <- c("apple:ball", "ball:cat","dog:ear") vec2 <- c("ball:apple","cat:cat","cat:ball","ball:cat","apple:ball") 这应该行得通 按每个字符分割所有向量,然后查找每个字符的频率(key.vec)。下一步查找目标向量中是否存在每个字符的相同频率(vec2)。这将有助于处理这两种模式 vec2[lapply(strsplit(vec2, ""), ta

我有两个向量

key.vec <- c("apple:ball", "ball:cat","dog:ear")

vec2 <- c("ball:apple","cat:cat","cat:ball","ball:cat","apple:ball")
这应该行得通

按每个字符分割所有向量,然后查找每个字符的频率(
key.vec
)。下一步查找目标向量中是否存在每个字符的相同频率(
vec2
)。这将有助于处理这两种模式

vec2[lapply(strsplit(vec2, ""), table) %in% lapply(strsplit(key.vec, ""), table)]

#[1] "ball:apple" "cat:ball"   "ball:cat"   "apple:ball"

您可以按如下方式使用
sub

full.key.vec <- c(key.vec, sub("(.*):(.*)", "\\2:\\1", key.vec))
ind <- vec2 %in% full.key.vec
vec2[ind]
为什么?
\\1
\\2
称为反向参考。它们与第一/第二正则表达式组匹配。因此,
(.*):(.*)
匹配字符串如下:
(apple):(ball)
。所以
\\2:\\1
变成
\\2=ball:\\1=apple
。有关更多信息,请参阅:

这是一个非常好的方法。Thanks@Ronak这个问题解决了吗?请接受回答,如果未解决,请澄清?
full.key.vec <- c(key.vec, sub("(.*):(.*)", "\\2:\\1", key.vec))
ind <- vec2 %in% full.key.vec
vec2[ind]
vec2[vec2 %in% c(key.vec, sub("(.*):(.*)", "\\2:\\1", key.vec))]