R: Скопируйте определенные элементы из вектора и вставьте их в кадр данных. - PullRequest
1 голос
/ 06 апреля 2019

Я создал R-код, который выдает результат в Шестнадцатеричный .
dput(hexResults) c("34", "c3", "3b", "7f", "14", "fd", "53", "dc", "ea", "25", "e0", "1a", "02", "e1", "67", "27", "34", "c3", "3b", "7f", "14", "fd", "53", "dc", "ea", "25", "e0", "1a", "02", "e1", "67", "27".

После этого я попытался преобразовать результаты в двоичном формате, используя пакет BMS hex2bin(hexResults) dput(hex2bin(hexResults)) c(0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1).

Если вы посмотрите поближе, вы заметите, что первое шестнадцатеричное число (34) преобразовано в двоичное, затем добавлено 4 ноля 0000, затем оно преобразовало второе число (c3) и снова добавило 4 нуля и так далее. Я не мог найти причину, за исключением того, что это может быть какой-то вид заполнения.

Теперь я пытаюсь получить:

  • скопируйте двоичное число, эквивалентное шестнадцатеричному числу, и пропустите 4 нуля между числами.
  • Вставьте 8-значное двоичное число в кадр данных.
  • Dataframe состоит из 8 столбцов, где каждое двоичное число будет находиться в одной строке (для целых данных). Таким образом, количество строк будет равно преобразованным числам. Цифры двоичного числа распределены по 8 столбцам каждого числа. Фрейм данных должен быть как на картинке ниже. Expected Dataframe

Я подумываю об этом, перебирая данные, мои трудности с копированием выборочных данных из вектора в фрейм данных. Любые предложения с использованием других команд, таких как вставка?

1 Ответ

1 голос
/ 06 апреля 2019

Не нужно ничего зацикливать. Вы можете просто преобразовать вектор в матрицу и сохранить его в формате df.

vec <- hex2bin(hexResults)
vec <- c(vec, 0, 0, 0, 0) #add last binary that is missing
df <- as.data.frame(matrix(vec, ncol = 12, byrow = TRUE)) # get into df format
df <- df[, -c(9:12)] #remove binary zeros

df[1:2, ] #check result
V1 V2 V3 V4 V5 V6 V7 V8
1  0  0  1  1  0  1  0  0
2  1  1  0  0  0  0  1  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...