【发布时间】:2013-03-09 10:01:16
【问题描述】:
这似乎是一个简单的问题,但让我很头疼(这不是功课,而是实际研究中的症结所在)
我有一个包含 2266 个级别的列表。该列表看起来有点像这样:
[1] ~/folder1/folder1/a.bin
[2] ~/folder1/folder1/b.bin
[3] ~/folder1/folder1/c.bin
[4] ~/folder1/folder2/a.bin
[5] ~/folder1/folder2/b.bin
[6] ~/folder1/folder2/c.bin
解释一下:列表是我使用readBin 函数读取的二进制文件的文件名。我想将每一行与其他每一行进行比较,所以我想要的是两列,其中包含从我的单列派生的所有唯一组合。
(choose 2266,2) 告诉我,我们的单列有 2566245 种组合成两列。
`expand.grid() 似乎让我走到了一半。但是我需要的组合是我需要的四倍:我得到两行,每行 5132490。这意味着存在重复:1 + 2 和 2 + 1 对我的目的来说是相同的。
expand.grid.df 和 unique=TRUE 似乎也没有帮助。
我的最后一个想法是 md5 对 500 万行中的每一行进行哈希处理,并尝试以这种方式检测重复项。
我正在寻找一些方法来制作两个列表,涵盖我列表的 2566245 个组合。或者以某种方式删除所有重复项。 我想我并不是绝对喜欢使用 R 并且已经研究过 awk 或 sed 来做同样的事情。不过还没有成功。
【问题讨论】:
-
你试过
combn(all_files, 2)吗? -
我也试过combn。我可以再试一次...
-
combn(all_files, 2)不起作用(甚至没有关闭)。 -
你能详细说明一下
doesn't work吗? -
您在上面显示的 6 个文件中获得了多少种组合?
标签: r combinatorics