【发布时间】:2012-01-25 21:44:20
【问题描述】:
我试图在 PERL 中解决这个问题,但它只适用于较少的数据,所以我需要一个 R 中的解决方案,我想它比 PERL 更快更容易,无论如何。我得到一个像这样的文件,在基因组中有两个位置(第一列和第二列)以及它们之间的距离(第三列)
cg00000029 cg01016459 848
cg00000029 cg02021817 38
cg00000029 cg02851944 13
cg00000029 cg02976952 238
cg00000029 cg03943270 93
cg00000029 cg07396495 604
cg00000029 cg12190057 929
我的第二个文件是这个,每个样本(1到6)在基因组中的位置和每列中的一个表达值
TargetID sample1 sample2 sample3 sample4 sample5 sample6
cg00000029 0.157 0.444 0.466 0.805 0.5489 0.448
cg01016459 0.873 0.930 0.926 0.942 0.932 0.9128
cg03943270 0.871 0.920 0.926 0.942 0.942 0.942
事实上,我有 100 个样本。我的想法是为每个样本获取一个包含表达式值的最终文件 取而代之的是cg和距离。例如,对于样本 1
0.157 0.873 848
0.157 0.871 93
对于样本 2
0.444 0.930 848
0.444 0.920 93
在 PERL 中,当我只有两个样本时,我没有任何问题,我将文件加载到两个 estructures 中,数组的散列,然后我使用嵌套的 foreach 循环比较它们,但它只需要 2 个样本的时间,想象一下100!我在 R 中尝试过,将数据加载到 2 个数据帧中,并将其用作
expression[rownames(expression) %in% rownames(distances),]
问题是我需要类似循环或应用函数的东西来使用第一个 cpg 值然后第二个迭代表达式数据,如果它们在表达式中成对出现,则输入表达式值和距离。
欢迎任何想法
提前致谢
`
【问题讨论】:
-
第一个文件中的第一列实际上是否有所不同?如果是这样,它是否会通过第二列的所有排列?我可以看到第 1 列和第 2 列出现“cg00000029 cg01016459”,但是否出现相反的情况?
-
不,其实2个点只有一个距离,不重复
-
第一列不同,但实际上2个点只有一个距离,它不重复,所以一旦计算出这个特定cpg的距离,它们就不会重复