根据R中另一列值的部分字符串匹配查找dataframe的子集

根据R中另一列值的部分字符串匹配查找dataframe的子集,r,R,我有一列具有唯一标识符的值,如下所示: df$1 <– c("identifier:ab134:4sfh", "identifier:gh164:9sgh", "identifier:3h1v4:kk9gh" df2$1 <– c(""identifier:ab134:4sfh|identifier:gh164:9sgh", "identifier:sfghskg8:kk9gh|identifier:fj893n:9sgh|identifier:gh164:9sgh",...)

我有一列具有唯一标识符的值,如下所示:

df$1 <– c("identifier:ab134:4sfh", "identifier:gh164:9sgh", "identifier:3h1v4:kk9gh"
df2$1 <– c(""identifier:ab134:4sfh|identifier:gh164:9sgh", "identifier:sfghskg8:kk9gh|identifier:fj893n:9sgh|identifier:gh164:9sgh",...)

df$1也许您可以使用
grep
查找匹配的字符串

new_subset <- df[grep(paste0("^(",paste(df2$z, collapse = "|"),")$"), df$z),]
new_subset
#[1] identifier:ab134:4sfh identifier:gh164:9sgh

new\u子集我真的不确定我能添加什么。我需要对每一行进行匹配,并且我使用了上面的代码(这不起作用)。如果您可以为显示的向量提供预期的输出,这将有助于
lappy(v1,函数(x)unlist(lappy(strsplit(v2,“|”,fixed=TRUE),函数(y)match(x,y))
还可以尝试
grep(df2$1,df$1)
所以我尝试了这个,我得到了一个很长的列表,看起来像这样:8806$:int[1:14037]NA NA NA NA NA…$:int[1:14037]不,不,不,不…$:int[1:14037]不,不,不,不…$:int[1:14037]NA NA NA NA NA…我想要一个如下输出:df$2您的代码中有不匹配的引号我收到一条错误消息:粘贴(df2,collapse=“|”):缺少参数,没有default@OliverL我写了
粘贴(df2,collapse=“|”)而不是
粘贴(df2,collapse=“|”)
@OliverL我已将问题中的数据集从
vector
更新为
data.frame
。希望这能解决问题。非常感谢你的帮助。现在它说的是grep中的
”错误(粘贴0(“^”,粘贴(df1,collapse=“|”),:无效的正则表达式“^”(“标识符:ab134:4sfh |标识符:gh164:9sgh”)
是否与
collapse=“|”
有关?我是否需要以某种方式更改它以使其符合regex规则?
new_subset <- df[grep(paste0("^(",paste(df2$z, collapse = "|"),")$"), df$z),]
new_subset
#[1] identifier:ab134:4sfh identifier:gh164:9sgh
df <- data.frame(z=c("identifier:ab134:4sfh", "identifier:gh164:9sgh", "identifier:3h1v4:kk9gh"))
df2 <- data.frame(z=c("identifier:ab134:4sfh|identifier:gh164:9sgh", "identifier:sfghskg8:kk9gh|identifier:fj893n:9sgh|identifier:gh164:9sgh"))