我很难弄清楚如何在R中找到镜像值。"镜像"可能是一个不正确的术语,我认为这是对我寻找答案的挑战。也许"反向复制"或"反向复制"更有意义。无论它被称为什么,我认为这是一个非常简单的想法,可能有也可能没有一个简单的解决方案。
以下是我的数据:
df <- data.frame("unique"=c("chr1_10_20:chr1_10_20","chr1_10_20:chr1_20_30", "chr1_10_20:chr1_30_40", "chr1_20_30:chr1_10_20"))
> df
unique
1 chr1_10_20:chr1_10_20
2 chr1_10_20:chr1_20_30
3 chr1_10_20:chr1_30_40
4 chr1_20_30:chr1_10_20
我感兴趣的是使用冒号(:)作为中间分隔符来查找作为其他行镜像的行。通过查看第2行和第4行,您可以理解我的意思。在第2行,左侧的:为chr1_10_20,右侧为chr1_20_30。行4正好相反,左侧为chr1_20_30,右侧为chr1_10_20。
我希望获得显示此镜像质量的行号。对于上面的示例,我希望的输出为:
二、四
或
2,4
我在R工作,但是如果更容易的话可以考虑使用shell。提前感谢!
5条答案
按热度按时间b5lpy0ml1#
这里有一个简单的方法来解决这个问题,我们把数据框分成两列,用一个循环来查看每一行在另一列中有没有相同的条目,然后反过来做同样的事情,最后删除那些相同的条目,然后我们可以用
which
和arr.ind=TRUE
来得到我们想要的匹配。它给出了
e5nqia272#
使用Regex对冒号前后的文本进行分组;然后创建一个新的字符串after:before并保存为新变量flip。
然后使用match查找匹配的翻转行:
rmbxnbpk3#
使用
bash
和awk
数据
dba5bblo4#
按分隔符拆分,排序,然后检查 * 是否从顶部或从底部重复(
fromLast = TRUE
),使用 which 获取索引:but5z9lq5#
用于多
awk
代码兼容性的便利测试框架: