R: упорядочивание двоичных последовательностей, например 101001111 - PullRequest
1 голос
/ 04 октября 2011

У меня есть ряд двоичных числовых последовательностей в качестве переменных индикатора. Например, это

100000001001      
110000000000
100000000011
111000000000
100000000000
100100000110

может быть индексом для 2 других недвоичных переменных.

Как бы я упорядочил их в R (или отсортировал), чтобы это возвращалось с соответствующими значениями, которые он индексирует:

100000000000
110000000000
111000000000
crap I'm not interested in

Где «дерьмо, которое меня не интересует» - это другие значения, которые не являются последовательностями, которые начинаются с 1, продолжаются с 1, а затем имеют конечные нули. Но у меня есть все возможные комбинации, которые мне не нужны. Любая помощь приветствуется.

Ответы [ 2 ]

4 голосов
/ 04 октября 2011

Создание вектора для демонстрационных целей (пример, приведенный выше):

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

Получите интересные значения с помощью регулярного выражения:

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

Сортируйте его:

> sort(notcrap)
[1] "100000000000" "110000000000" "111000000000"
0 голосов
/ 06 октября 2011

Если вы ищете скорость, используйте этот битхак, чтобы определить, является ли int x "дерьмом" или нет

bool notCrap(int x) {
    int y = ~x;
    return (y & (y-1)) == 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...