【发布时间】:2016-02-25 21:58:58
【问题描述】:
我想检查两个数据集。一个数据有很多列(这个例子有两列df1),一个数据有一列(df2)
首先,我想检查 df1 每一行的第一列以及 df2 的所有部分,如果找到任何相似的部分,那么 df1 的行号和df2 写成
例如 df1 的第 1 列有两个与 df1 第 3 行中的 df2 Q9Y6Q9 相似的行部分,其中 Q9Y6Q9 在 df2 的第 4 行中。所以输出是 3-4 ,其他的也一样
【问题讨论】:
-
我觉得你的语法让我很反感,也许英语不是你的母语,但我不太明白。但是,我认为这涉及使用
for循环逐行循环遍历您的两个数据帧,并在for循环中使用if语句检查您的条件是否满足,如果满足则进行编辑。 -
不确定您真正追求的是什么,因为您的规范与预期输出不匹配。但是,这里有一行代码可以在 df2 的相应行中找到 df1$sample_1 列中的任何“子字符串”。
apply(df1, 1, function(x) grep(paste(unlist(strsplit(x[1], ';')), collapse = '|'), df2$subunits..UniProt.IDs.)) -
@Gopala 谢谢,但以下是正确答案。不过,我还在等待一些修改,如果你有什么想法,你可以调整他的答案
标签: r