R:排序二进制序列,例如101001111

时间:2011-10-04 19:23:34

标签: r binary

我有一系列二进制数序列作为指标变量。例如这个

100000001001      
110000000000
100000000011
111000000000
100000000000
100100000110

可以是其他2个非二进制变量的索引。

我如何在R中对它们进行排序(或对它们进行排序),以便返回它带有索引的相应值:

100000000000
110000000000
111000000000
crap I'm not interested in

其中“我不感兴趣的垃圾”是不是以1开头的序列的其他值,继续1,然后是尾随零。但我所拥有的是所有可能的组合,我不需要。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

为演示目的制作一个向量(上面给出的例子):

x <- c("100000001001", "110000000000", "100000000011", "111000000000", "100000000000", "100100000110")

用regexp抓住有趣的值:

notcrap <- x[grep('^[1]*[0]*$', x)]

排序:

> sort(notcrap)
[1] "100000000000" "110000000000" "111000000000"

答案 1 :(得分:0)

如果您正在寻找速度,请使用此bithack确定int x是否为“废话”

bool notCrap(int x) {
    int y = ~x;
    return (y & (y-1)) == 0;
}